この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちはさかじです。今年もよろしくお願いします。
Node.js初心者の私は、ログを出力するのについついconsole.log()
を使いたくなってしまいます。きちんとログを出力するためにlog4jsを使ってみました。
インストール
$ npm install log4js
コンソールにログ出力
hello.js
'use strict'
const log4js = require('log4js')
const logger = log4js.getLogger();
logger.level = 'debug';
logger.debug('Hello world!');
実行しますと以下の出力が表示されます
$ node hello.js
[20YY-MM-DDThh:mm:ss.sss] [DEBUG] default - Hello world!
ログレベル
ログレベルを指定できます。
traceレベル
以下のログ全て出力します。
logger.level = 'trace';
logger.trace('trace');
logger.debug('debug');
logger.info('info');
logger.warn('warn');
logger.error('error');
logger.fatal('fatal');
debagレベル
以下のログ全て出力します。
logger.level = 'debug';
logger.debug('debug');
logger.info('info');
logger.warn('warn');
logger.error('error');
logger.fatal('fatal');
infoレベル
以下のログ全て出力します。
logger.level = 'info';
logger.info('info');
logger.warn('warn');
logger.error('error');
logger.fatal('fatal');
warnレベル
以下のログ全て出力します。
logger.level = 'warn';
logger.warn('warn');
logger.error('error');
logger.fatal('fatal');
errorレベル
以下のログ全て出力します。
logger.level = 'error';
logger.error('error');
logger.fatal('fatal');
fatalレベル
以下のログ全て出力します。
logger.level = 'fatal';
logger.fatal('fatal');
ファイルへ出力
ファイルに保存したい場合は、configure()
で指定します。
'use strict'
const log4js = require('log4js')
log4js.configure({
appenders : {
system : {type : 'file', filename : 'system.log'}
},
categories : {
default : {appenders : ['system'], level : 'debug'},
}
});
const logger = log4js.getLogger('system');
logger.debug('Hello world!');
実行しますと何も出力されませんが、system.log
が作成されています。
ファイルを開いてみる以下のように書き出されています。
$ cat system.log
[20YY-MM-DDThh:mm:ss.sss] [DEBUG] system - Hello world!
ログの使い分け
同じファイルに色々ログを入れるとわからなくなるため、ログの種類に応じて分けてみたいと思います。
'use strict'
const log4js = require('log4js')
log4js.configure({
appenders : {
system : {type : 'file', filename : 'system.log'},
debug : {type : 'file', filename : 'debug.log'}
},
categories : {
default : {appenders : ['system'], level : 'info'},
debug : {appenders : ['debug'], level : 'debug'}
}
});
const systemLogger = log4js.getLogger('system');
const debugLogger = log4js.getLogger('debug');
debugLogger.debug('Hello world! for debug');
systemLogger.info('Hello world! for system');
system.log
とdebug.log
が作成されてログが出力されていることがわかります。
最後に
簡単ですがlog4jsを使ってみました。console.log()
を使うと、ログだらけで読みにくいものになってしまいます。このモジュールを使うとデバッグ段階が終了したらwarnレベルより上のだけ出力するなど簡単に出力レベルも変更できるのでので不要なログもシャットアウトでき、ログも読みやすくなりますね。