minstudio

서버 로깅 및 모니터링 (Winston, Morgan)

실제 서비스(운영 서버)에서는 `console.log()`를 쓰지 않습니다! 터미널 창을 닫으면 기록이 다 날아가기 때문입니다. 언제 어떤 에러가 났는지, 해커가 어떤 주소로 공격을 시도했는지 증거를 남기기 위해 파일 형태로 꼼꼼하게 일기(Log)를 쓰는 기술입니다.

const morgan = require("morgan");
const winston = require("winston");

// 1. Morgan: 모든 HTTP 요청을 보기 좋게 터미널에 찍어주는 미들웨어
app.use(morgan("dev")); 
// 출력 예: GET /users 200 15.342 ms - 54

// 2. Winston: 에러를 터미널뿐만 아니라 "error.log" 파일로 저장하는 전문 로거
const logger = winston.createLogger({
    level: "error",
    transports: [
        new winston.transports.File({ filename: "error.log" })
    ]
});

app.get("/broken", (req, res) => {
    logger.error("DB 접속 실패 크리티컬 에러 발생!");
    res.status(500).send("에러");
});
서버 로깅 및 모니터링 (Winston, Morgan) | Minstudio