2016-05-13 100 views
0

ロギングに動的日付を使用する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は、古いログファイルを解放してファイルハンドラを閉じることができますか?

+0

どのバージョンのlog4j2を使用しますか?カスタム削除オプションが2.5で追加されているのを見ました。https://logging.apache.org/log4j/2.x/manual/appenders.html#CustomDeleteOnRollover – geert3

+0

私はファイルを削除したくなく、ロックを解除します(例えば、外部ジョブがそれらをログアーカイブまたは他のタスクに移動させることができるように)。私は '2.5'を使用しています。 – membersound

答えて

0

上記のfilePatternは、ログに記録されているファイルと同じファイル名に解決されます。これは確実にロールオーバーを失敗させることになります。

+0

申し訳ありません私はここにそれを含めることを忘れました。 – membersound

関連する問題