2012-11-16 94 views
6

我在我的tomcat服務器日誌中收到此錯誤「log4j:錯誤未能重命名」。 我在我的log4j XML中有多個DailyRollingFileAppender。並且每個appender指向不同的文件。只有應用程序的實例正在運行。 我用手柄工具和運行命令(日誌文件名作爲參數)log4j:錯誤重命名失敗

手柄-f AMS-app.log ,其結果是 Tomcat7.exe PID:5032類型:文件54C:E:\ APPS \ ams \ logs \ ams-app.log

從這我假設文件上只有一個鎖。 我的環境Windows Server 2008,tomcat 7.0和Java 6和slf4j-log4j12(1.5.6)

當在AIX服務器上託管相同的應用程序時,此問題沒有發生。 我googled這個問題,它似乎是Windows specfic。 另外我不喜歡使用DatedFileAppenders或任何派生的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> 

+1

你能請張貼log4j的配置? –

回答

0

我有同樣的問題,並通過按log4j的更新到1.2.15版本修復它this discussion

+0

我們使用log4j 1.2.15,但我們仍然有與該版本相同的問題。 –

+1

我找到了我的問題的解決方案,並希望在這裏分享。在記錄器標籤中添加appender-ref時,會引發重命名錯誤。在根標記中添加appender-ref時,它永遠不會拋出該錯誤。 –