2016-06-14 42 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; 
     } 
     } 
相关问题