morgan과 winston 같이 사용하기

broccoli·2021년 5월 12일
0

logging

목록 보기
4/4
post-thumbnail

morgan은 http 요청 응답을 위한 로깅으로 사용하기 좋고 winston은 로깅들을 포맷화해서 저장하기 좋다. 따라서 두개를 같이 사용해보자.

1. 일단 winston logger를 아래 링크에 따라 작성한다.

2. custom morgan middleware를 만든다.

//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을 사용함.

ℹ️ Predefined log formats

  • “combined”: which gives you the Apache standard combined format for your logs.
  • “common”: referencing the Apache standard common format.
  • “dev”: A color-coded (by request status) log format.
  • “short”: Shorter than the default format, including just the few items you’d expect a request logline would have.
  • “tiny”: Even shorter, just the response time and a few extra items.

참고링크

profile
🌃브로콜리한 개발자🌟

0개의 댓글