我们在使用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