Edited at

log4js-nodeを使ってみた

More than 1 year has passed since last update.

log4js-nodeとは、node上で動作するようにしたlog4js。log4js-nodeは、log4jsとは異なるライブラリみたいだ。


準備する

適当にプロジェクトを作り、log4js-nodeをインストールする。

$ mkdir hello-log4js-node

$ cd hello-log4js-node
$ npm init
$ npm install log4js --save
$ touch index.js


Hello log4js

最小のコードを実行してみる。


index.js

var log4js = require('log4js');

var logger = log4js.getLogger();

logger.debug('Hello log4js');


デフォルトでは、標準出力に出力される。

$ node index.js

[2015-01-02 00:27:45.956] [DEBUG] [default] - Hello log4js


ログをファイルに出力する - その1


index.js

var log4js = require('log4js');

// (*1) コンソール出力しない場合は、Appenderをクリアする必要がある。
//log4js.clearAppenders();
log4js.loadAppender('file'); // (*2)
log4js.addAppender(log4js.appenders.file('./debug.log'), 'hello-log4js');

var logger = log4js.getLogger('hello-log4js');
logger.setLevel('WARN'); // (*3)

logger.trace('Hello log4js');
logger.debug('Hello log4js');
logger.info('Hello log4js');
logger.warn('Hello log4js');
logger.error('Hello log4js');
logger.fatal('Hello log4js');




  • file appenderをLoadし(*2)、出力先のファイルとcategory hello-log4jsを指定して、Appenderを追加する。

  • デフォルトでは、コンソールにも出力するので、ファイルのみに出力したい場合は、log4js.clearAppendersする。(*1)

出力結果は、以下のような感じ。ログレベルをWARNに設定しているので、TRACE/DEBUG/INFOは出力されない。

$ node index.js 

[2015-01-02 01:25:21.151] [WARN] hello-log4js - Hello log4js
[2015-01-02 01:25:21.153] [ERROR] hello-log4js - Hello log4js
[2015-01-02 01:25:21.153] [FATAL] hello-log4js - Hello log4js


ログをファイルに出力する - その2

ファイル出力するための設定は、以下のようにも書くことができる。


index.js

var log4js = require('log4js');

log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'debug.log', category: 'hello-log4js' }
]
});

var logger = log4js.getLogger('hello-log4js');
logger.setLevel('WARN');

logger.trace('Hello log4js');
logger.debug('Hello log4js');
logger.info('Hello log4js');
logger.warn('Hello log4js');
logger.error('Hello log4js');
logger.fatal('Hello log4js');



より実践的な設定

log4js-nodeのREADMEにもリンクされているが、express+log4jsのサンプルアプリケーションがある。

このサンプルが非常に参考になった。