ロギングに動的日付を使用するlog4j2.xml
構成があります。これはtomcat
で実行されます。Log4j2はTomcatのログファイルをロックしますか?
<RollingRandomAccessFile name="TEST" fileName="my-application-${date:yyyy-MM-dd}.txt" filePattern="my-application-%d{yyyy-MM-dd}.txt">
<Policies>
<TimeBasedTriggeringPolicy modulate="true"/>
...
ローリングファイルが機能せず、ロガーが古いファイルにログを残していたという問題がありました。したがって、私は真夜中で次のコマンドを実行している:
((org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false)).reconfigure();
これはlog4j2構成でdate
タイムスタンプを更新し、そのログファイルは現在、深夜にローリングされています。
問題:古いファイルがまだロックされています。彼らはもはや使われなくても。
質問:LogManager
は、古いログファイルを解放してファイルハンドラを閉じることができますか?
どのバージョンのlog4j2を使用しますか?カスタム削除オプションが2.5で追加されているのを見ました。https://logging.apache.org/log4j/2.x/manual/appenders.html#CustomDeleteOnRollover – geert3
私はファイルを削除したくなく、ロックを解除します(例えば、外部ジョブがそれらをログアーカイブまたは他のタスクに移動させることができるように)。私は '2.5'を使用しています。 – membersound