log4j:ERROR 无法重命名

标签 log4j windows-server-2008 tomcat7 rollingfileappender

我在我的 tomcat 服务器日志中收到此错误“log4j:ERROR Failed to rename”。
我的 log4j XML 中有多个 DailyRollingFileAppender。每个 appender 指向不同的文件。仅运行一次应用程序实例。
我使用了 Handle 实用程序并运行命令(以日志文件名作为参数)

handle -f ams-app.log
结果是
Tomcat7.exe pid: 5032 类型: 文件 54C: E:\apps\ams\logs\ams-app.log

由此我假设文件上只有一个锁。
我的环境 Windows Server 2008, tomcat 7.0 and Java 6 and slf4j-log4j12(1.5.6)

当同一应用程序托管在 AIX 服务器上时,不会发生此问题。
我用谷歌搜索了这个问题,它似乎是 Windows 特定的。
我也不热衷于使用 DatedFileAppenders 或任何 fork 的 log4j。
logback 是否解决了此类问题。
任何有关如何解决此问题的建议表示赞赏。
谢谢

这是我的 log4j xml

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE_APPENDER" class="org.apache.log4j.ConsoleAppender">
    <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
    <param name="Target" value="System.out"/>
    <param name="Threshold" value="DEBUG"/>
    <layout class="org.apache.log4j.PatternLayout">     
        <param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m  %n"/>
    </layout>
</appender>

<appender name="APP_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
    <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
    <param name="datePattern" value="yyyy-MM-dd"/>
    <param name="file" value="E:/apps/ams/logs/ams-app.log"/>
    <param name="append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m  %n"/>
    </layout>        
</appender>

<appender name="SQL_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
    <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
    <param name="datePattern" value="yyyy-MM-dd"/>
    <param name="file" value="E:/apps/ams/logs/ams-sql.log"/>
    <param name="append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m  %n"/>
    </layout>
</appender>

<appender name="Quartz_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
    <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
    <param name="datePattern" value="yyyy-MM-dd"/>
    <param name="file" value="E:/apps/ams/logs/ams-Quartz.log"/>
    <param name="append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m  %n"/>
    </layout>
</appender>


<logger name="org.springframework"><level value="WARN"/></logger>
<logger name="flex.messaging.log.ServletLogTarget"><level value="WARN" /></logger>
<logger name="net.sf.jasperreports"><level value="WARN" /></logger>
<logger name="net.sf.jasperreports.engine.fill"><level value="WARN" /></logger> 
<logger name="org.apache.commons.beanutils"><level value="WARN" /></logger>
<logger name="jdbc.sqltiming" additivity="false"><level value="DEBUG"/><appender-ref ref="SQL_APPENDER"/></logger>
<logger name="org.quartz" additivity="false"><level value="WARN" /><appender-ref ref="Quartz_APPENDER"/></logger>
<logger name="org.quartz.SchedulerException"><level value="ERROR" /><appender-ref ref="MAIL_APPENDER"/></logger>     
<logger name="org.hmil.ams.BatchDAO" additivity="false"><level value="INFO"/><appender-ref ref="Quartz_APPENDER"/></logger>
<root>      
    <priority value="debug"></priority> 
    <appender-ref ref="APP_APPENDER" />      
    <appender-ref ref="CONSOLE_APPENDER"/>
</root>

最佳答案

关于log4j:ERROR 无法重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410189/

相关文章:

visual-studio - 在 Windows Server 2008 R2 和 Windows 7 上开发 .NET Web 应用程序的主要优缺点是什么?

Redis - Tomcat session 管理器 : Read from Slave

Spring MVC 多部分文件 - NoSuchMethodError

java - Java 编译器可以避免 Log4j 参数的参数表达式求值吗

java - Solr 是否可以在不重新启动 Solr 的情况下加载新的 log4j.properties 配置文件?

asp.net - 在Windows Server 2008 64位下运行asp.net 1.1应用程序

Spring Security HTTPS拦截url访问

java - jBOSS+ ESAPI java.lang.ClassCastException : org. jboss.logmanager.log4j.BridgeLogger 无法转换为 org.owasp.esapi.Logger

java - log4j2 - Syslog appender 和 PatternLayout

elasticsearch - Windows Logstash输出到具有IAM EC2角色 “Unable to access SQS queue”的AWS SQS