在log4j滚动appender中更改文件名

时间:2015-03-29 04:23:17

标签: java apache logging

如何在文件达到最大限制后更改滚动文件appender中的文件名,目前显示名称

myStruts1App.log
myStruts1App.log.1
myStruts1App.log.2

我需要文件名为

myStrutsApp1.log
myStrutsApp2.log

示例代码

<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false" />
<param name="maxFileSize" value="10KB" />
<param name="maxBackupIndex" value="5" />
<param name="file" value="${catalina.home}/logs/myStruts1App.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 
%-5p  %c{1}:%L - %m%n />
</layout>
</appender>

1 个答案:

答案 0 :(得分:0)

尝试以下方法。我将-%i添加到文件名中。那应该是它的增量部分。如果有效,请告诉我。

<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false" />
<param name="maxFileSize" value="10KB" />
<param name="maxBackupIndex" value="5" />
<param name="file" value="${catalina.home}/logs/myStruts1App-%i.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 
%-5p  %c{1}:%L - %m%n />
</layout>
</appender>

1.X版本不支持它。这是逻辑的代码。尝试扩展RollingFileAppender并覆盖rollOver()方法。这应该是直截了当的。

 for (int i = maxBackupIndex - 1; i >= 1 && renameSucceeded; i--) {
file = new File(fileName + "." + i);
if (file.exists()) {
  target = new File(fileName + '.' + (i + 1));
  LogLog.debug("Renaming file " + file + " to " + target);
  renameSucceeded = file.renameTo(target);
}
  }