winstonを使ってみたよ

ロギングにlog4jsを使おうと思っていたのだけど、なんか微妙だったのと、flatironで使われているwinstonがnodejitsu製だしよさそうだったので使ってみました。

基本的な使い方

最初に基本的な使い方から。

index.js
var winston = require('winston');

winston.log('info', 'log method: info');
winston.info('info log');

logメソッドでログレベルとログへ出力する文字列を渡してあげるか、
ログレベルのメソッドにログへ出力する文字列を渡してあげるといいみたい。

$ node index.js
info: log method
info: info log

ファイルに出力する

デフォルトだとコンソールに出力されるので、ファイルに出力してみる。

index.js
var winston = require('winston');

winston.add(winston.transports.File, {
  filename: 'winston.log'
});
winston.remove(winston.transports.Console);

winston.log('info', 'log method');
winston.info('info log');

なんかまあ、コード読めばわかる感じ。

$ node index.js
$ cat winston.log
{"level":"info","message":"log method","timestamp":"2012-11-25T15:02:08.275Z"}
{"level":"info","message":"info log","timestamp":"2012-11-25T15:02:08.278Z"}

winston.transports.Logglyってのもあるみたいだけど、これはなんなんだろう?

オブジェクトの中身を出力する

index.js
var winston = require('winston');

winston.info('object data:', {
  aaa: 'aaa',
  bbb: 'bbb'
});

オブジェクトの中身をログに。

$ node index.js
info: object data: aaa=aaa, bbb=bbb


基本的な使い方はこれくらい。
プラグイン形式になっているらしく、ログをメールで送ったりとかもできるようなので、必要があれば自分で作って組み込むってこともできて良いかも。