로그 미들웨어란 클라이언트의 모든 요청 사항을 기록하여 서버의 상태를 모니터링하기 위한 미들웨어이다.
문제가 발생할 때 빠르게 진단할 수 있다. 또한, 로그 데이터는 사용자의 행동 분석하는 등 데이터 분석 작업에도 활용할 수 있다.
로그 기능을 지원하는 morgan, winston과 같은 라이브러리를 사용하거나 CloudWatch, Datadog과 같은 서비스를 이용할 수도 있다.
수업에선 winston을 사용한다.
middleware폴더에 생성을 한다.
import winston from "winston";
const logger = winston.createLogger({
level: "info", // 로그 레벨을 'info'로 설정합니다.
format: winston.format.json(), // 로그 포맷을 JSON 형식으로 설정합니다.
transports: [
new winston.transports.Console(), // 로그를 콘솔에 출력합니다.
],
});
export default function (req, res, next) {
// 클라이언트의 요청이 시작된 시간을 기록합니다.
const start = new Date().getTime();
// 응답이 완료되면 로그를 기록합니다.
res.on("finish", () => {
const duration = new Date().getTime() - start;
logger.info(
`Method: ${req.method}, URL: ${req.url}, Status: ${res.statusCode}, Duration: ${duration}ms`
);
});
next();
}