我有一个使用 log4j2
的网络应用程序。应每天创建日志。
问题:旧文件的内容永远不会被删除,但任何新的一天都会附加到该文件。所以它不断增长。在 tomcat8
上运行时,以下配置通常是否正确?
log4j2.xml:
<Configuration>
<Appenders>
<RollingFile name="TEST" fileName="d:\test-application.txt" filePattern="d:\test-application-%d{yyyy-MM-dd}.log">
<Policies>
<TimeBasedTriggeringPolicy modulate="true"/>
</Policies>
//...
<RollingFile>
//...
</Appenders>
//...
</Configuration>
专家:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
最佳答案
您不是第一个报告此行为的人,共同因素似乎是 Windows。 Log4j 尝试重命名该文件。如果失败,它会尝试复制和删除,然后删除该文件。如果文件上有锁,重命名将失败,然后很可能复制成功但删除失败。但是代码仍然使用 File 对象的 delete 方法,它不擅长报告错误,而且 Log4j 不检查返回值,因此它会静默失败。
此行为是一个错误,应该修复,但它不会真正解决您的问题 - 它只会让您知道。要修复它,您需要找出阻止重命名成功的原因。
关于java - log4j2 RollingFile Appender 不更改 Tomcat 上的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36978672/