2012-07-13 64 views
4

我已經設置TimeBasedRollingPolicy每分鐘(爲了測試目的)推出文件,我面臨的問題是一個警告,並沒有創建zip或gz文件。警告:log4J:使用TimeBasedRollingPolicy後關閉翻轉動作失敗

的log4j:WARN在後接近側翻動作

失敗我附源推測出的問題,但都沒有成功呢。我是否缺少log4j.xml中的任何配置?

<appender name="errorAppender" class="org.apache.log4j.rolling.RollingFileAppender"> 
     <param name="File" value="C:/error.log"/> 
     <param name="Append" value="true"/> 
     <param name="BufferedIO" value="true"/> 
     <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
      <param name="FileNamePattern" value="C:/error.%d{ddMMMyyyy HH:mm:ss}.log.gz" /> 
     <param name="ActiveFileName" value="C:/error.log"/> 
    </rollingPolicy> 

     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p %C (line:%L) - %m%n"/> 
     </layout> 
     <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
      <param name="LevelMax" value="error"/> 
      <param name="LevelMin" value="error"/> 
      <param name="AcceptOnMatch" value="true"/> 
     </filter> 
    </appender> 

我使用的是log4j-1.2.17和apache-log4j-extras-1.1。有沒有人看到這個問題或有任何線索?

回答

1

我使用的是log4j-1.2.17和apache-log4j-extras-1.1。有沒有人看到 這個問題,並有任何線索呢?

我也使用log4j-1.2觀察到了這個問題。 和apache-log4j-extras-1.1。完全相同的消息。

我已經嘗試過各種調整無濟於事。當rollingPolicy-> FileNamePattern似乎被觀察到的唯一時間是當它沒有使用appender->文件參數和rollingPolicy-> ActiveFileName參數。但即使如此,我還沒有看到它翻滾成功,也沒有gzzip以前的文件。

我也得到同樣的消息:

log4j: setFile called: somepath/somefile.log, true 
log4j: setFile ended 
log4j:WARN Failure in post-close rollover action 

非常沮喪。

+0

看起來沒有其他辦法,除了擴展DailyFileRollingAppender類並重新實現rollOver()方法來壓縮文件。我這樣做,它工作得很好。 – AMKhan 2012-08-15 08:07:26

0

我也有同樣的問題,但在我的情況下,這是因爲'fileNamePattern'路徑文件夾不存在。整頓,爲我工作,翻轉文件正在創建。

4

問題與「log4j的:在後接近側翻動作 WARN失敗」的消息是,在基於Windows的系統,你不能與創建一個文件名「:」字符,所以指定的FileNamePattern不應包含以下任何一個:\,/,:,*,?,「,<,>,|

這裏是我的應用程序的log4j.xml,使用滾動文件appender可以正常工作。使滾動每秒創建一個新文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="consola" class="org.apache.log4j.ConsoleAppender"> 
    <param name="target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M:%L] - %m%n"/> 
    </layout> 
    </appender> 

    <appender name="desarr" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <param name="Append" value="false"/> 
    <rollingPolicy name="desarr" class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/> 
     <param name="activeFileName" value="C:/workspace/Probador/log/importacion222.log"/> 
    </rollingPolicy> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M] - %m%n"/> 
    </layout> 
    </appender> 

    <root> 
    <priority value ="debug" /> 
    <appender-ref ref="consola" /> 
    <appender-ref ref="desarr"/> 
    </root> 

</log4j:configuration> 

特別注意:

<param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/> 

嘗試壓縮文件之前請嘗試此操作。

2

我在帶有WARN消息的log4j中遇到了同樣的問題 - 「log4j:WARN失敗後關閉翻轉操作」並且日誌文件沒有翻轉。這是造成日誌文件寫入目錄中權限不足的根源。在這種情況下,Java的文件。renameTo()方法默默地失敗(只返回一個布爾值false)。花了大量的時間來弄清楚這個問題:(

0

對我來說,解決辦法是手動創建歸檔文件的目錄。

0

如果您使用的是org.apache.log4j.rolling.TimeBasedRollingPolicy rollingPolicy,然後例如,如果存在/ var/log/blah/archive/YYYY/MM目錄,則以下翻轉操作僅適用;在夜間cronjob中創建它應該執行如前所述,當沒有足夠的權限來創建日誌文件時,也會發生這種情況。

<appender name="infoFile" 
      class="org.apache.log4j.rolling.RollingFileAppender"> 
    <param name="threshold" 
      value="INFO"/> 
    <param name="append" 
      value="true"/> 
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="ActiveFileName" 
      value="/var/log/blah/file.log"/> 
     <!-- IMPORTANT the archive folder must already exist, or log4j cannot 
     put the rotated log there, and will keep using the old one --> 
     <param name="FileNamePattern" 
      value="/var/log/blah/archive/%d{yyyy}/%d{MM}/file.log.%d{yyyy-MM-dd}.gz"/> 
    </rollingPolicy> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
      value="%5p | %-40c{2} | %-4L | %d{yyyy-MM-dd}T%d{HH:mm:ss} | %m%n"/> 
    </layout> 
    </appender> 
+0

雖然原始的海報產生了一個不應該展現你的觀察的配置,但它仍然是log4j 1.x的一個相當不幸的特性。我們仍然運行基本上API/ABI凍結的產品,並且部署在高度受管制的區域,所以我被卡住的log4j-extras延長了幾行,用於處理您使用cronjob條目進行的操作。該補丁可以在這裏找到:http://pastebin.com/DugN7AiZ – Moreaki 2015-10-24 11:47:08