log4js
javaで使われいてるlog4のjavascript版のlog4jsをNode.jsにコンバージョンしたもの。
https://github.com/nomiddlename/log4js-node
特徴的な機能としては次のようなものがある。
- Node.jsのConsoleログを置き換えられる
 - file appenderでは、ファイルサイズでローテーションができる
 - メール送信ができる(smtp appender)
 - logstashに送信できる(Logstash UDP appender)
 - Workerプロセス構成のときに使えるmultiprocess appender
 - それぞれのカテゴリにそれぞれのログレベルで出力を設定できる
 
■インストール
まずはモジュールのインストール。
$ npm install log4js --save
次に出力設定ファイルを、外部ファイルとして作成する。
log4js_config.json
{
    "appenders": [
        {
            "type":     "File",
            "category": "system",
            "maxLogSize": 1048576,
            "backups": 3,
            "compress":true,
            "filename": "logs/system.log"
        },
        {
            "type":     "dateFile",
            "category": "access",
            "filename": "logs/access.log",
            "pattern":  "-yyyy-MM-dd"
        },
        {
            "type":     "dateFile",
            "category": "error",
            "filename": "logs/error.log",
            "pattern":  "-yyyy-MM-dd"
        },
        {
            "type":     "console",
            "category": "test"
        }
    ],
    "levels": {"system": "INFO"},
    "replaceConsole": true
}
上記を例に設定内容の記載。
| appenders | type | dateFile | ローテーション対応したファイルへの出力 | 
| file | ただのファイルへの出力 | ||
| console | すべてをconsoleへの出力 | ||
| category | 出力するログの設定の単位。カテゴリごとに設定をすることができる。 | ||
| filename | 出力するファイルの名前 | ||
| pattern | Outputストリーム。デフォルトは、process.stdoutになっている | ||
| maxLogSize | typeがfileの場合の最大ファイルサイズ(bytes) | ||
| backups | backup世代数 | ||
| compress | typeがfileの場合のオプションで、gzipをするかどうか?フラグ | ||
| levels | 出力するログレベルを設定。例では、categoryがsystemのものをINFOレベル以上で出力するという設定 | ||
| replaceConsole | typeにconsoleが指定されていた場合、consoleへの出力フォーマットが通常のログ形式と同じになる設定 | ||
上記のlevelsで使用できる値は以下の通り。
| ALL | すべて出力 | 
| TRACE | TRACE 以上を出力 | 
| DEBUG | DEBUG 以上を出力 | 
| INFO | INFO 以上を出力 | 
| WARN | WARN 以上を出力 | 
| ERROR | ERROR 以上を出力 | 
| FATAL | FATAL 以上を出力 | 
| MARK | MARK 以上を出力 | 
| OFF | 出力しない | 
以下は実装例。
// モジュールの取り込み
var log4js = require('log4js');
// 設定ファイルの取り込み(ファイルは環境変数:LOG4JS_CONFIGに指定してもよい)
// reloadSecsはオプション(byou )。通常は60秒間隔で設定ファイルがReloadされる。
log4js.configure('path/log4js_config.json', { reloadSecs: 300 });
// 設定がいるを絶対パスで記載することもできる。
log4js.configure('log4js_config.json', { cwd: '/absolute/path/to/log/dir' });
// 出力するカテゴリの指定
var logger = log4js.getLogger('system');
// 出力レベルの設定(設定ファイルのlevelsに相当)
logger.setLevel('ERROR');
// 出力
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
0 件のコメント:
コメントを投稿