2016-05-13 147 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