node + express + log4js

| トラックバック(0)

log4jsを使ってロギングしてみました。

参考にしたサイトは以下。
http://d.hatena.ne.jp/muddydixon/20111204
https://github.com/nomiddlename/log4js-node

まずapp.jsやserver.js以外からも同じロガーを参照する事を考え、ロガーを以下のようにライブラリ化します。

$ vi ../lib/logger.js

var log4js = require('log4js');
log4js.configure('./log4js.json', { reloadSec: 300 });
var logger = log4js.getLogger('default');
module.exports = logger;
module.exports.log4js = log4js;

ロガーの設定はルートディレクトリにlog4js.jsonという形で以下のようにしてみました。

$ vi ./log4js.json
{
  "appenders": [
    {
      "type": "dateFile",
      "filename": "logs/access.log",
      "pattern": "-yyyy-MM-dd",
      "maxLogSize": 20480,
      "backups": 3,
      "category": "default"
    },
    {
      "type": "console",
      "category": "default"
    }
  ],
  "levels": {
    "default": "INFO"
  }
}

ポイントはlevelsの部分で、対象カテゴリ(自分で定義する種類のロガー)とそれのレベルを設定するところなどでしょうか。

あとはapp.jsやその他jsから呼びます。expressと合わせるとこんな感じでしょうか。

var logger = require('./lib/logger');
    app.configure(function(){
      app.use(logger.log4js.connectLogger(logger, { level: logger.log4js.levels.INFO, nolog: ["\\.css", "\\.js", "\\.jpg", "\\.jpeg", "\\.gif"] }));
//      app.use(express.logger('dev')); // switch logger to log4js
.......
    });

細かいところは省略してます。
app.useで書いてますが、app.configureで環境に合わせて書いた方が良いでしょう。
あと、nolog設定で不要なアクセスログを切っていますが、express自体のロガーが機能していると、コンソールにそのログは出続けてしまうので、expressのロガーはコメントアウトして切ってしまっています。

こんな感じすかね。

ではでは。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: node + express + log4js

このブログ記事に対するトラックバックURL: http://blog.chrhsmt.com/mt-tb.cgi/124