t-katochinさんが開発したlog4jの拡張アペンダをさらに拡張してみました。
[log4j] いいとこどりAppender
名前は「org.mericle.log4j.ForcedDailyRollingFileAppender」です。
どんな拡張かというと、
ログローテートを*必ず*実行する機能です。
例えばバッチ処理でログに加工を行う場合、
バッチが動作するまでにログローテートが行われている必要があります。
ですが今までのアペンダには、
ログローテートのタイミングは*最初の*ログ出力時という問題があります。
日次でローテートを行い、
バッチ処理が0時05分だったとしましょう。
もしも0時丁度から0時05分までにログが出力されなかったとき、
その日のバッチ処理が行えないことになってしまいます。
今まではそうした要件がある場合、
ログローテートのためにログ出力を行うことで対応していました。
ただそのためだけに、
別のバッチ処理が発生することになってしまいます。
また、ローテート用のあまり意味のないログが出力されることにもなります。
要件次第ではこれが許されないことがあります。
同じことを要求される案件が3つ目を迎えたとき、
このアペンダの作成を決意しました。
このアペンダは日次なら0時丁度にログローテートされます。
分次、週次、月次、年次にも(理論上は)対応している憎いやつです。
スレッド処理があるので不安がありますが、
JMeterでの10万回試験では問題は見つかっていません。
…きっと大丈夫!
同じ悩みを抱えたマイノリティな仲間がいましたら、
その助けになることを祈ります。
○バイナリ
log4j-extention-1.21.jar
※JDK6でコンパイルしています。
○ソース
log4j-extention-1.21-sources.jar
※Seasarファウンデーションソフトウェアライセンスに従ってください。
※2011-07-26追記:ちょっとコメントを直しました。
※2011-11-30追記:ローリング→ローテートに変更。なぜかこう言ってしまう…あ、アペンダ名か!
0 件のコメント:
コメントを投稿