Java log4j2 RollingFile Appender是否未更改Tomcat上的文件名?

Java log4j2 RollingFile Appender是否未更改Tomcat上的文件名?,java,spring,tomcat,log4j,log4j2,Java,Spring,Tomcat,Log4j,Log4j2,我有一个使用log4j2的web应用程序。应每天创建日志 问题:旧文件的内容永远不会被删除,但新的一天只是附加到该文件中。所以它不断地增长。在tomcat8上运行时,以下配置通常正确吗 log4j2.xml: <Configuration> <Appenders> <RollingFile name="TEST" fileName="d:\test-application.txt" filePattern="d:\test-applicati

我有一个使用
log4j2
的web应用程序。应每天创建日志

问题:旧文件的内容永远不会被删除,但新的一天只是附加到该文件中。所以它不断地增长。在
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>

org.springframework.boot
弹簧靴起动器
org.springframework.boot
spring启动程序日志记录
org.springframework.boot
spring-boot-starter-log4j2

您不是第一个报告此行为的人,常见的因素似乎是Windows。Log4j尝试重命名该文件。如果失败,它将尝试复制和删除,然后删除该文件。如果文件被锁定,重命名将失败,很可能复制成功,但删除失败。但是代码仍然使用File对象的delete方法,该方法不擅长报告错误,Log4j也不检查返回值,因此它会默默地失败


这种行为是一个bug,应该被修复,但它不会真正解决您的问题——它只会让您知道它。要修复它,您需要找出是什么阻止重命名成功。

我们经常看到的是多个进程或多个web应用程序使用相同的log4j2.xml配置并记录到同一文件。一个进程将阻止另一个进程删除该文件


我在编辑器中打开日志文件时遇到了这个问题,因此午夜滚动将失败

它主要发生在我使用tomcats
parallel deployment
时,因此使用
myfile##3.war安装war文件的更新版本,然后在新版本启动后取消部署以前的版本。也许动态未部署的版本仍然会锁定日志文件?两个应用程序都写入同一个…在并行部署时,是否可以使用不同的配置(不同的日志文件)进行测试?