超过最大大小时,不会生成新的日志文件

时间:2016-06-14 06:25:36

标签: log4j rollingfileappender

我已将最大文件大小设置为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

提前感谢!

1 个答案:

答案 0 :(得分:1)

这是因为在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;
        }
      }