我們在使用log4j 2.5
進行日誌記錄事件的Tomcat容器上運行WAR部署。我們現在已經修改了部署的log4j2.xml配置,讓日誌文件每隔24小時滾動一次,但使用這種新配置,文件的滾動不會像我們預期的那樣發生。log4j 2滾動文件未滾動
示例配置:
<RollingFile name="file"
fileName="${sys:catalina.base}/logs/${web:contextPath}.log"
filePattern="${sys:catalina.base}/logs/${web:contextPath}-%d{dd-MMM-yyyy}.log"
append="true">
<PatternLayout pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" >
<header>LOG START DATE=${date:dd-MMM-yyyy HH:mm:ss.SSS} APP=${web:contextPath} TOMCAT=${env:HOSTNAME}:${env:CONNECTOR_PORT}${sys:line.separator}</header>
<footer>LOG END DATE=${date:dd-MMM-yyyy HH:mm:ss.SSS} APP=${web:contextPath} TOMCAT=${env:HOSTNAME}:${env:CONNECTOR_PORT}${sys:line.separator}</footer>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
任何想法,爲什麼翻車沒有發生?
注:相同的配置,但與<CronTriggeringPolicy schedule="0 0 0 * * ?" />
代替TimeBasedTriggeringPolicy
做翻轉,但是,在這種情況下,翻了個身文件獲取與今天的文件名和不是昨天的日期創建日期。注意2:我們有其他類似配置的部署,每24小時翻滾一次,但這些配置的文件名硬編碼,而不是使用${web:contextPath}
。這個查詢可能與RollingFile無法正常工作有關嗎?
---編輯---
UPDATE:我們能夠獲得TimeBasedTriggeringPolicy使用上述配置翻轉文件時的Tomcat實例運行在Windows上,但不是在Tomcat實例運行在Linux上。
在我們的結尾,我們目前被迫使用'log4j2 v2.5'罐子。我已經在Windows託管的Tomcat上運行部署,並且在窗口上滾動工作得很好,就像在您的設置中一樣。但是,當Tomcat在Linux上運行時不行。我已經檢查了WAR和Tomcat庫中的所有jar版本,並且我很確定所有jar版本都匹配Linux和Windows設置。到目前爲止,我可以在Linux上使用翻轉工作的唯一方法是使用'CronTriggeringPolicy',而我已經將觸發器設置爲''0 59 23 * *?「'以確保翻轉文件日期在前一天。 –
我剛剛更新了我的答案,因爲我也在Linux上成功測試過。你在使用哪種Linux? – VivekRatanSinha