Node.js + Express + log4js

Node.js + Express + log4js-node でログ出力を行います。

検証環境

  • Node.js 0.8.12
  • Express 3.0.0rc5
  • log4js 0.5.3

モジュールの読み込み

var express = require('express');
var app = express();
var log4js = require('log4js');

log4jsの設定

app.configure(function(){
    log4js.configure({
        'appenders': [
            { 'type': 'console' }, // console に出力
            {
                'type': 'file',
                'filename': 'path/to/logfile',
                // 1024 * 1024 byte = 1MB
                'maxLogSize': 1024 * 1024,
                'backups': 5,
                // stdoutへの出力も拾う
                'category': [ 'project-name', 'console' ],
            },
        ],
        'replaceConsole': true // stdoutへの出力も拾う
    });

    var logger = log4js.getLogger('project-name');
    app.use(log4js.connectLogger(logger, {
        'level': log4js.levels.DEBUG,
        // アクセスログを出力する際に無視する拡張子
        'nolog': [ '\\css', '\\.js', '\\.gif' ],
        // アクセスログのフォーマット(以下はデフォルト出力)
        'format': ':remote-addr - - ":method :url HTTP/:http-version" :status :content-length ":referrer" ":user-agent"'
    }));
    app.use(app.router);
});

出力

以降、別ファイル(routeファイル等)でも以下のコードで指定したログファイルに出力できます。

var logger = log4js.getLogger('project-name');
logger.trace('trace log');
logger.debug('debug log');
logger.info('information log');
logger.warn('warning log');
logger.error('error log');
logger.fatal('fatal error log');

参考

Node.js v0.8 APIリファレンス http://nodejs.jp/nodejs.org_ja/docs/v0.8/api/
Express APIリファレンス http://expressjs.com/api.html
log4js-node GitHub https://github.com/nomiddlename/log4js-node