Node.js の logger

どれ使えばいいのか良く分からない。
log4js を使えばいいのか。
適当にググったら winstone ってのを見つけたので試してみる。

var env = process.env.NODE_ENV || 'dev';
var winston = require('winston');
 
winston.setLevels(winston.config.syslog.levels)
 
if (env !== 'dev') {
  winston.remove(winston.transports.Console);
}
 
var customColors = {
  trace: 'white',
  debug: 'green',
  info: 'green',
  warn: 'yellow',
  crit: 'red',
  fatal: 'red'
};
 
var logger = new (winston.Logger)({
  colors: customColors,
  levels: {
    trace: 0,
    debug: 1,
    info: 2,
    warn: 3,
    crit: 4,
    fatal: 5
  },
  transports: [
    // Console.
    new (winston.transports.Console)({
      level: 'trace',
      colorize: true,
      timestamp: true
    }),
    // File.
    new (winston.transports.File)({
      filename: './logs/node.log',
      level: 'info',
      timestamp: true,
      json: false,
      maxsize: 100000,
      maxFiles: 5,
    })
  ]
});
winston.addColors(customColors);
 
module.exports = logger;

app.js

var logger = require('./logger');
logger.trace('trace');
logger.debug('debug');
logger.info('info');
logger.warn('warn');
logger.crit('crit');
logger.fatal('crit');
$ node app.js
2014-07-23T15:48:33.023Z - trace: trace
2014-07-23T15:48:33.026Z - debug: debug
2014-07-23T15:48:33.027Z - info: info
2014-07-23T15:48:33.027Z - warn: warn
2014-07-23T15:48:33.028Z - crit: crit
2014-07-23T15:48:33.028Z - fatal: crit

trace とか debug の文字の所に色が付いて表示された。
logs/node.log にもちゃんとログが出力された。
時間が +9:00 されてない感じがするが、とりあえずこれを使ってみよう。