📊 Monitoring & Logging

Level: Advanced

Monitoring adalah proses memantau performa dan kesehatan aplikasi. Logging adalah pencatatan aktivitas dan error yang terjadi di aplikasi. Bayangkan monitoring seperti dashboard mobil yang menunjukkan kecepatan & bensin, sedangkan logging seperti kotak hitam pesawat yang merekam semua kejadian.

📖 Konsep Utama

🔹 Contoh Logging dengan Winston

// logger.js
const { createLogger, transports, format } = require("winston");

const logger = createLogger({
  format: format.combine(
    format.timestamp(),
    format.json()
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: "app.log" })
  ]
});

module.exports = logger;

// app.js
const express = require("express");
const logger = require("./logger");
const app = express();

app.get("/", (req, res) => {
  logger.info("Route / diakses");
  res.send("Halo Monitoring & Logging");
});

app.listen(3000, () => logger.info("Server berjalan di http://localhost:3000"));

🔹 Contoh Monitoring dengan Morgan

const morgan = require("morgan");
app.use(morgan("combined")); // log request HTTP

🛠️ Praktik Kecil

Buat aplikasi Express lalu:

🎮 Mini Challenge

Buat sistem logging & monitoring sederhana:

Tugas tambahan: Tambahkan alert (misalnya kirim email/Slack) jika error rate melebihi ambang batas tertentu.