これは、標準の Log4j ライブラリでは実現できませんが、Log4j Extras Companionライブラリに実装されています。これは別の JAR ファイルであり、ここからダウンロードできます。
StandardRollingFileAppender
は、ログ ファイルのサイズに基づいてログのローテーション (ローリング) を実行します。ログ ファイルが指定されたサイズ制限に達すると、新しいログ ファイルが開始され、古いログ ファイルの名前が変更されて_1
サフィックスが付けられます。既存のアーカイブ ログも、、、などのサフィックスを付けてローテーションされ_2
ます_3
。
必要なのは、このデフォルトのログ ファイル命名ポリシーをオーバーライドして、カウンタの代わりにアーカイブ ログ ファイル名に現在の日付を使用することです。これはTimeBasedRollingPolicy
フィルターで構成できます ( here is the documentation )。
Log4J 構成ファイル ( log4j.xml )を変更します。
<appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="Threshold" value="DEBUG"/>
<param name="File" value="engine.log"/>
<param name="Append" value="true"/>
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="engine_%d.log" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %t %-5p [%c{1}] %m%n "/>
</layout>
</appender>
この構成例は、公式の Log4J wikiから取得しました(ページの下部にあるフィルター構成とその他の例のセクションを参照してください)。
アップデート:
extras ライブラリのRollingFileAppender
クラスには、以前のように最大ログ ファイル サイズを設定するための適切な属性がありませんRollingFileAppender
。このプロパティは、トリガー ポリシーを使用して指定できます。この場合はSizeBasedTriggeringPolicy
を使用する必要があります (ドキュメントはこちら)。トリガー ポリシーの構成は、ローリング ポリシーと同じです (関連する部分のみを示します)。
<appender ...>
...
<triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
<param name="MaxFileSize" value="10000000" />
</triggeringPolicy>
...
</appender>