2016-06-14 71 views
0

我已將最大文件大小設置爲100Kb。但是,超過大小,不會生成新的日誌文件。相反,文件大小不斷增加。如果我重新啓動服務器,則會生成新的日誌文件。有人可以告訴我,這是正確的情況還是因爲任何設置問題?當超過最大大小時,不會生成新的日誌文件

我的log4j設置如下。

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.File=D:/logs/sample.log 
log4j.appender.file.Append = true 
log4j.appender.file.layout = org.apache.log4j.PatternLayout 
log4j.appender.file.MaxFileSize = 100KB 
log4j.appender.file.MaxBackupIndex = 5 
log4j.appender.file.layout.ConversionPattern=[%d] %-5p %c %x - %m%n 

提前致謝!

+0

我想補充一點。當sample.log超過100KB時,請考慮最初有兩個文件sample.log和sample.log.1 ,sample.log.1將重命名爲sample.log.2,並且sample.log保持不變。 當sample.log超過200KB時,sample.log.2將重命名爲sample.log.3,sample.log保持不變。 以相同的方式達到600KB以上時,sample.log.5將被刪除。 –

回答

0

發生這種情況的原因是在rollOver()方法RollingFileAppender.java中,重命名當前日誌文件失敗。

renameSucceeded = file.renameTo(target); 

這裏file.renameTo(target);返回false。爲了解決這個問題,請覆蓋該方法並添加自定義代碼來解決問題。一種方法是在上述語句之後添加下面的代碼。

if(!renameSucceeded)        //custom code begins 
     {             
     try 
     { 
      FileUtils.copyFile(file, target); 
      BufferedWriter bw = new BufferedWriter(new FileWriter(fileName)); 
      bw.write(""); 
      bw.flush(); 
      bw.close(); 
      renameSucceeded = true; 
     } 
     catch (IOException e) { 
      renameSucceeded = false; 
     } 
     } 
相關問題