謝辞

以下の記事を参考にさせていただきました。感謝です。

*【Node.js】expressでaccess log + log rotate | 湘南社中テクニカルブログ


node.jsとexpressでのアクセスログ

node.js+expressには、express標準のloggerだとログの出力先をファイルにすると、対象のファイルがずっとオープン状態になってしまう、という欠点があります。 (※:もしかしたら私が回避方法を知らないだけかもしれませんが。)

そのため、いい感じのログをファイル出力し、日次でローテーションする、というような運用ができません。

1ファイルに長々とアクセスログが出力されるようでは、運用もままならないので、log4jsを使ってexpressのアクセスログをいい感じにローテーションできるようにしたいと思います。


log4jsを使う

LoggingFrameworkのlog4jsについては、こちらで紹介しています

node.js+log4jsで、ログローテーションする

http://modalsoul.github.com/report/2012/10/14/node-js-log4js/

実際のコードはこんな感じ。※:要リファクタリング app.routerの前で、functionを入れログレベルをinfoで出力させています。

実際にexpressをスタートさせ、ブラウザからアクセスすると以下のようなログが出力されます。

access.log

[2012-10-29 23:06:18.732] [INFO] dateFile - 127.0.0.1	Mon Oct 29 2012 23:06:18 GMT+0900 (東京 (標準時))	GET	/	200	-	Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
[2012-10-29 23:06:18.968] [INFO] dateFile - 127.0.0.1	Mon Oct 29 2012 23:06:18 GMT+0900 (東京 (標準時))	GET	/stylesheets/style.css	200	http://localhost:3000/	Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4