RollingRandomAccessFileAppender
のみを設定してOnStartupTriggeringPolicy
を構成しましたが、DefaultRolloverStrategy
のmax属性をある数に設定すると、ログはその量を無期限に生成し続けます。
ここに私のlog4j2.xmlがあります:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingRandomAccessFile
name="RollingRAF"
fileName="logs/app.log"
filePattern="logs/app-%d{[email protected]}.log">
<PatternLayout>
<Pattern>%d %p %c{1.} %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="myLogger" level="warn">
<AppenderRef ref="RollingRAF"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
名前パターンにイテレータがないためですか?
ファイル名の精度が秒に設定されているためですか?
OnStartupTriggeringPolicy
のみが設定されているためですか?
それともここで何が起こっているのでしょうか?
ここでの私の目標は、最後の5つのアプリケーションの実行を記録するローリング構成をセットアップすることでした。
TimeBasedTriggeringPolicyが指定されている場合、DefaultRolloverStrategyはfilePatternで指定された日付パターンを使用します。 max
属性を使用するには、filePatternで%i
パターンを指定し、ロールオーバーポリシーに<SizeBasedTriggeringPolicy size="20 MB" />
を追加します。 (またはもちろん、他のサイズ。)
<DefaultRolloverStrategy max="5"/>
のmaxの値により、同じロールオーバー期間(%d{[email protected]}
の日付パターンを指定してから1秒)以内に、サイズベースの場合に作成されるファイルが5つ以下になることが保証されます。ロールオーバーがトリガーされました。
これは、毎日新しいフォルダーにロールオーバーするなど、ロールオーバーウィンドウが長く、そのフォルダー内で最大サイズ= 20 MBで作成されるファイルが5つ以下であることを確認する場合に便利です。
更新:
Log4j 2.5では、 カスタム削除アクション を設定する機能が追加されました。すぐに使用できるように、経過時間、カウント、または占有するディスク容量(累積ファイルサイズ)に基づいてファイルを削除できます。