1. morgan 미들웨어 만들어주기
const express = require('express');
const path = require('path');
const morgan = require('morgan'); // 미들웨어 연결
const app = express();
app.set('port', process.env.PORT || 3000);
// 로그 기록
if (process.env.NODE_ENV === 'production') {
app.use(morgan('combined')); // 배포환경이면
} else {
app.use(morgan('dev')); // 개발환경이면
}
app.get('/', (req, res) => {
res.send('Hello, index');
});
app.listen(app.get('port'), () => {
console.log(app.get('port'), '번 포트에서 대기 중');
});
app.use(morgan('combined'));
::1 - - [02/Nov/2021:01:36:21 +0000] "GET /about HTTP/1.1" 404 144 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"
이런식으로 상세하게 나오게 된다.
2. skip
로깅의 스킵여부를 결정하기 위한 함수이다
morgan('combined', {
// 코드가 400 미만라면 함수를 리턴해 버려서 로그 기록 안함.
// 코드가 400 이상이면 로그 기록함
skip : function(req, res) { return res.statusCode < 400 }
});
const morgan = require("morgan");
const logger = require("../config/tracer");
require("dotenv").config();
const format = () => {
const result = process.env.NODE_ENV === "combined" ? "combined" : "dev";
return result;
};
// 로그 작성을 위한 Output stream옵션.
const stream = {
write: (message) => {
logger.info(
message.replace(
/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,
""
)
);
},
};
// 로깅 스킵 여부 (만일 배포환경이면, 코드가 400 미만라면 함수를 리턴해 버려서 로그 기록 안함. 코드가 400 이상이면 로그 기록함)
const skip = (_, res) => {
if (process.env.NODE_ENV === "combined") {
return res.statusCode < 200;
}
return false;
};
// 적용될 moran 미들웨어 형태
const morganMiddleware = morgan(format(), { stream, skip });
module.exports = morganMiddleware;
이렇게 사용자가 어떤 요청을 날렸고 400 인지 200 인지도 나와서 확인할 수 있게된다.