log4j:ERROR重命名失败 [英] log4j:ERROR Failed to rename
问题描述
我的tomcat服务器日志中出现此错误"log4j:ERROR重命名失败". 我的log4j XML中有多个DailyRollingFileAppender.每个附加程序都指向不同的文件.该应用程序实例仅运行一次. 我使用了Handle实用程序并运行了命令(以日志文件名作为参数)
I get this error "log4j:ERROR Failed to rename" in my tomcat server log. I have multiple DailyRollingFileAppender in my log4j XML. And each appender points to different file. Only once instance of the application is running. I used Handle utility and run the command (with log file name as parameter)
句柄-f ams-app.log 结果是 Tomcat7.exe pid:5032类型:文件54C:E:\ apps \ ams \ logs \ ams-app.log
handle -f ams-app.log and the result is Tomcat7.exe pid: 5032 type: File 54C: E:\apps\ams\logs\ams-app.log
据此,我假设文件上只有一个锁. 我的环境是Windows Server 2008,tomcat 7.0和Java 6和slf4j-log4j12(1.5.6)
From this I assume there is only one lock on the file. My environment Windows Server 2008, tomcat 7.0 and Java 6 and slf4j-log4j12(1.5.6)
当在AIX服务器上托管相同的应用程序时,不会发生此问题. 我用谷歌搜索了这个问题,它似乎是Windows特有的. 另外,我也不希望使用DatedFileAppenders或任何派生的log4j. 登录是否解决了此类问题. 任何有关如何解决此问题的建议,不胜感激. 谢谢
This problem was not happening when same application hosted on AIX server. I googled this problem and it seems to be windows specfic. Also I am not keen to use DatedFileAppenders or any forked log4j. Does logback solve such issues. Any suggestions on how to solve this problem is appreciated. Thanks
这是我的log4j xml
here my 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>
推荐答案
看来,如果您正在运行Windows,这是一个已知的错误:
It appears that if you're running windows this is a known bug:
请参阅此处: http://do.whileloop.org/2014/02/14/log4j-rolling-file-appenders-in-windows/
请参阅此处: https://issues.apache.org/bugzilla/show_bug.cgi?id=29726
还有这里: http://www.coderanch.com/t /424837/java/java/Log-log-file-rolled-day
这篇关于log4j:ERROR重命名失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!