インストール

まずは、環境の準備です。

npmでlog4jsをインストールします。

$ npm install log4js

ログ出力のために必要な手順

1. log4jsを読み込む

var log4js = require('log4js');

2. loggerを取得する

var logger = log4js.getLogger();

3. ログレベルを指定して、ログ出力する

logger.info('This is test.');

4.実行結果

$ node logging-sample.js
[2012-10-14 14:04:49.197] [INFO] [default] - This is test.

出力形式を指定せずに実行すると、デフォルトで標準出力にログ出力されます。


ログをファイルに出力する手順

ログの出力先を標準出力からファイルに変更します。

1. appenders.jsonを生成

appenders: [{
	"type": "file",
	"filename": "logging.log",
}]

2. log4jsに設定を反映

log4js.configure({
	appenders: [{
	"type": "file",
	"filename": "logging.log",
	}]
});

3. loggerを取得する

var logger = log4js.getLogger('file');

getLoggerの引数に、上記で設定したtypeを指定します。

4.実行結果

実行すると、プロダクトと同じ階層に”logger.log”ファイルが生成され、以下のように出力されます。

[2012-10-14 18:50:33.876] [INFO] file - This is test.

ログファイルの出力先を変更する

appendersのfilenameに、ファイルパスを含めて記載すると、出力先を任意に変更できます。

log4js.configure({
	appenders: [{
	"type": "file",
	"filename": "logs/logging.log",
	}]
});

上記の設定で実行すると、プロダクトと同階層にある”logs”ディレクトリ配下に、”logger.log”ファイルが生成され、ログが出力されます。

ただし、パスにしていしたディレクトリは自動で生成はされないので、あらかじめディレクトリを生成しておく必要があります。


ログファイルのローテーションを設定する手順

https://github.com/nomiddlename/log4js-node/wiki/Date%20rolling%20file%20appender ログファイルを日次でローテーションするよう設定します。

1. appenders.jsonを生成

appenders: [{
	"type": "dateFile",
	"filename": "logging.log",
	"pattern": "-yyyy-MM-dd"
}]

2. log4jsに設定を反映する

log4js.configure({ appenders: [{ “type”: “dateFile”, “filename”: “logging.log”, “pattern”: “-yyyy-MM-dd” }] });

ここで設定している”pattern”は、ローテーションで生成されるログファイル名のpostfixです。

3. loggerを取得する

var logger = log4js.getLogger('dateFile');

getLoggerの引数に、上記で設定したtypeを指定します。

4. ローテーションの動作

上記設定の場合、初回起動時は”filename”の設定値の”logging.log”という名前のログファイルが生成されます。

そして午前0時に、現在の”logging.log”が、”logging.log-yyyy-MM-dd“にリネームされ新しい”logging.log”が生成されます。


patternの設定

patternの設定は、ローテーションされたファイルのpostfixになります。

patternの設定は、以下の書式が適用されます。

  • yyyy : 西暦を4桁表示します。2桁表示するには”yy”を指定します。

  • MM : 月

  • dd : 日

  • hh : 時間(24時間表示)

  • mm : 分

  • ss : 秒

  • sss : ミリ秒

  • O : タイムゾーン(大文字のOです)

これでnode.js+log4jsで、ログローテーションできるようになりました。

最後に、日次でローテーションするサンプル全コードを載せます。

この他にもlog4jsには色々な設定ができるようなので、機会を見て調べてみたいと思います。