morgan
은 http 요청 응답을 위한 로깅으로 사용하기 좋고 winston은 로깅들을 포맷화해서 저장하기 좋다. 따라서 두개를 같이 사용해보자.
winston
logger를 아래 링크에 따라 작성한다.//custom morgan middleware
const morgan = require('morgan')
const Logger = require('./logger')
require('dotenv').config()
const format = () => {
const result = process.env.NODE_ENV === 'production' ? 'combined' : 'common'
return result
}
const stream = { write: (message) => Logger.http(message) }
const skip = (_, res) => {
if (process.env.NODE_ENV === 'production') {
return res.statusCode < 400
}
return false
}
const morganMiddleware = morgan(format(), { stream, skip })
module.exports = morganMiddleware
custom morgan middleware를 app.js
에 넣어준다.
//app.js
app.use(morganMiddleware)
development
환경에서 dev
를 사용하지 않고 common
을 사용하는 이유는 dev
는 기본적으로 request status 에 color code가 적용되어 파일에 작성될때 색깔 유니코드가 같이 작성되기 때문에 그런 이슈를 피하기 위해서 common
prefined log format을 사용함.