AMG Solution

log4jのDailyRollingFileAppenderでMaxBackupIndexを使う方法

こんにちは、堀部です。

RollingFileAppenderにはバックアップファイル数の最大値を指定するMaxBackupIndexプロパティがありますが、DailyRollingFileAppenderではMaxBackupIndexは使えません。

そこでDailyRollingFileAppenderでも古いログファイルを削除できるようにAppenderを作成したいと思います。

対象バージョン

今回使用したバージョンは以下の通りです。

Java
1.8
log4j
1.2.14

Appenderを自作する

DailyRollingFileAppenderの場合は日付でローテーションしますので、MaxBackupIndexで指定する値は保存する日数(3を指定すると3日前以前のファイルを削除する)とします。

以下のサイトのソースをコピペすれば基本的には作成できますが、そのままですと(当日-MaxBackupIndex)日の1日のみしか削除されないため、それ以前のファイルも削除するように修正します。

https://wiki.apache.org/logging-log4j/DailyRollingFileAppender

rollOver()の372行目以降に以下を追加します。

ライブラリをjarにする

ライブラリのjarを展開してコンパイルしたclassファイルで上書き、再度jarを作成すれば完了です。

コマンド例

まとめ

いかがでしたでしょうか。

溜まり続けるログファイルに対しては何らかの対処が必要になりますが、log4jで完結できるのは非常にありがたいですね。

HORIBE'S BLOG

堀部光一の記事

堀部光一の記事の最新情報をお届けいたします。

SAME CATEGORY BLOG

この記事と同様のカテゴリー記事

マイナビ2019 採用エントリーはじめました。
LOADING