Node.jsとExpress3環境のログのコンソール出力とファイル管理
コンソール出力
Express3.10.5でログを出力する。
使い方
Express3には標準でloggerミドルウェアが含まれているので、それを利用する。
app.use(express.logger());
上の一行を追加するとコンソールに出力される。
C:\Express-manifest>node logger.js Express server started 127.0.0.1 - - [Sat, 14 Jun 2014 05:10:46 GMT] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"
ログフォーマットを指定
出力した項目をフォーマットとして指定することが可能。
app.use(express.logger({ format: ':remote-addr :response-time :url :status' }));
上のコードはフォーマットとして、
- ipアドレス
- レスポンスタイム
- URL
- ステータスコード
を出力するように指定した例で、コンソール出力は以下のようになった。
C:\Express-manifest>node logger.js Express server started 127.0.0.1 85.713 / 304
ログファイルを生成
アクセスログをコンソールに出力する方法は、Express3のloggerミドルウェアを利用すれば、簡単に設定できることが分かった。ログをファイルに出力する最初の手順として、fsモジュールをrequireする。
var fs = require('fs');
ファイルに出力するため、ファイルシステムにアクセスするモジュールが必要になる。次にファイルシステムにアクセスする設定を書く
var logs = fs.createWriteStream('./access.log', {flags: 'w'});
そして、loggerにstreamという引数でlogsを設定する。
app.use(express.logger({ format: ':remote-addr :response-time :url :status', stream: logs }));
ここまでの設定で、access.logというログファイルが作成され、随時ログが追記されるようになる。