log4js
- node.js+express+log4jsでのアクセスログローテーション (29 Oct 2012 | Tags:
node.js+express+log4jsでのアクセスログローテーション node.js+express+log4jsでのアクセスログローテーション
謝辞
以下の記事を参考にさせていただきました。感謝です。
*【Node.js】expressでaccess log + log rotate | 湘南社中テクニカルブログ
node.jsとexpressでのアクセスログ
node.js+expressには、express標準のloggerだとログの出力先をファイルにすると、対象のファイルがずっとオープン状態になってしまう、という欠点があります。 (※:もしかしたら私が回避方法を知らないだけかもしれませんが。)
そのため、いい感じのログをファイル出力し、日次でローテーションする、というような運用ができません。
1ファイルに長々とアクセスログが出力されるようでは、運用もままならないので、log4jsを使ってexpressのアクセスログをいい感じにローテーションできるようにしたいと思います。
log4jsを使う
LoggingFrameworkのlog4jsについては、こちらで紹介しています
実際のコードはこんな感じ。※:要リファクタリング app.routerの前で、functionを入れログレベルをinfoで出力させています。
実際にexpressをスタートさせ、ブラウザからアクセスすると以下のようなログが出力されます。
access.log
LinkLatest post:
- OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った
- OpenWhisk+Scalaで作るServerless Architectureとっかかり
- BluemixにPlayframeworkアプリケーションをデプロイする
- sbt、Giter8を統合するってよ
- Scala 2.12.0でSAM型
Recent Books:
- node.js+log4jsで、ログローテーションする (14 Oct 2012 | Tags:
node.js+log4jsで、ログローテーションする node.js+log4jsで、ログローテーションする
インストール
まずは、環境の準備です。
npmでlog4jsをインストールします。
ログ出力のために必要な手順
1. log4jsを読み込む
2. loggerを取得する
3. ログレベルを指定して、ログ出力する
4.実行結果
出力形式を指定せずに実行すると、デフォルトで標準出力にログ出力されます。
ログをファイルに出力する手順
ログの出力先を標準出力からファイルに変更します。
1. appenders.jsonを生成
2. log4jsに設定を反映
3. loggerを取得する
getLoggerの引数に、上記で設定したtypeを指定します。
4.実行結果
実行すると、プロダクトと同じ階層に”logger.log”ファイルが生成され、以下のように出力されます。
ログファイルの出力先を変更する
appendersのfilenameに、ファイルパスを含めて記載すると、出力先を任意に変更できます。
上記の設定で実行すると、プロダクトと同階層にある”logs”ディレクトリ配下に、”logger.log”ファイルが生成され、ログが出力されます。
ただし、パスにしていしたディレクトリは自動で生成はされないので、あらかじめディレクトリを生成しておく必要があります。
ログファイルのローテーションを設定する手順
1. appenders.jsonを生成
2. log4jsに設定を反映する
log4js.configure({ appenders: [{ “type”: “dateFile”, “filename”: “logging.log”, “pattern”: “-yyyy-MM-dd” }] });
ここで設定している”pattern”は、ローテーションで生成されるログファイル名のpostfixです。
3. loggerを取得する
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には色々な設定ができるようなので、機会を見て調べてみたいと思います。
Latest post:
- OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った
- OpenWhisk+Scalaで作るServerless Architectureとっかかり
- BluemixにPlayframeworkアプリケーションをデプロイする
- sbt、Giter8を統合するってよ
- Scala 2.12.0でSAM型
Recent Books:
-