티스토리 뷰

Language/Node.js

express morgan 로깅

KyeongRok Kim 2019. 4. 3. 16:41

express 앱을 띄우면 console.log만으로는 뭔가 찍기가 힘들다.
그래서 로깅을 하려면 morgan을 써야 한다. spring boot에서는 logback을 쓰면 되는데 express에서는 morgan을 쓰면 된다.
일단 이걸 추가 하려면 npm install --save morgan으로 설치 해주면 된다.

그리고 중요한 것은 morgan에 설정을 한 구현체를 만들어줘야 한다.

logger/index.js

module.exports.stream = {
    write: function (message, encoding) {
        logger.silly(message);
    }
};

const formatMaker = function (tokens, req, res) {
  return [
    "[REQ]",
    tokens.method(req, res),
    tokens.url(req, res),
    tokens.status(req, res),
    JSON.stringify(req.body)

    // tokens.res(req, res, 'content-length'), '-',
    // tokens['response-time'](req, res), 'ms',
  ].join(' ')
};

module.exports.prod = morgan(formatMaker, {
    skip: function (req, res) {
      const url = `${req.get('host')+req.originalUrl}`;
      return url.indexOf("/health") > -1;
    }
});

module.exports.prod이거는 prod일 때 이 설정을 쓰겠다는 뜻이다. qa, dev등을 구현해주면 profile별로 다른 설정을 할 수 있다.
그리고 위 코드에서 중요한 부분은 formatMaker이 부분이다. 여기에서 내용을 바꿔주면 로그의 형식이 바뀐다.
예를들어 위 코드에서 "[REQ]" 이렇게 찍어놨는데

[REQ] POST /api/v1/hdac/hdac_get_parent_output 200 {body}

위와 같이 나온다. method, url, status, body 이렇게 네가지만 찍고 싶어서 위와 같이 세팅 했다.

app.js

var logger = require('./libs/logger');
app.use(logger.prod);

구현체는 이런식으로 불러 올 수 있다.

end.

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함