nodejs winston 모듈을 이용해 로컬타임 출력하기

노드에서 많이 쓰이는 Logger 모듈 3가지

일단 morgan 같은 경우엔 Express4에서 정식 로거 모듈로 사용되고 있고, winston과 bunyan 모듈은 둘다 나름의 특징이 있어서 뭐가 더 좋다라고 할수는 없다. 그냥 취향에 맞는 녀석을 선택해서 쓰면 될것 같다. 둘을 비교한 내용은 이미 검색하면 많이 나오니까 요 포스트로 대신한다.

winston 모듈을 이용해 자동으로 타임로그 찍기

사실 해당 문서를 잘 읽어보면 아래와 같은 단락이 나오는데 예제가 없다보니 어떻게하라는거지? 라고 생각할수도 있다.

timestamp: Boolean flag indicating if we should prepend output with timestamps (default false).
If function is specified, its return value will be used instead of timestamps.

검색해보니 요렇게 써보라는 예제를 찾았다.

var winston = require('winston');
var logger = new (winston.Logger)({ 
    transports: [ new (winston.transports.Console)({ timestamp: true}) ]
});

오예!! 간단하구만…. 이렇게 생각했는데 출력된 로그를 보니 아래와 같이 기준시간이

2014-10-13T02:00:00.231z - info: 어쩌구 저쩌구....

그래서 좀더 검색을 해봤더니 commom.js 모듈을 직접 수정하라는 글도 찾았다.
http://blog.whitelife.co.kr/154

하지만 결론은 그냥 요렇게 하면된다.

var winston = require('winston');
var moment = require('moment');

var logger = new (winston.Logger)({
    transports: [
      new (winston.transports.Console)({
        timestamp: function(){
          return moment().format("YYYY-MM-DD HH:mm:ss.SSS");
        }
      })
    ]
});

오늘 얻은 교훈

사실 문서에도 함수를 지정할수있게 써 있는데 예제가 없으니 대충보고 없네..하고 넘어가는 습관 -_-;;;; 영어는 꼼꼼히 읽자!