【问题标题】:Change the file name in log4j rolling appender更改 log4j 滚动附加程序中的文件名
【发布时间】:2015-06-02 06:01:06
【问题描述】:

文件达到最大限制后如何在滚动文件追加器中更改文件名,目前它正在显示名称

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>

【问题讨论】:

    标签: java apache logging


    【解决方案1】:

    试试下面的。我在文件名中添加了-%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);
    }
      }
    

    【讨论】:

    • 没有给出正确的输出,文件名为 myStruts1App-%i.log.1
    • 是的。那是为 log4j2.x... 错过添加该信息。我在 1.x 版本中没有尝试过。
    • 你能提供1.x吗
    • 很遗憾,基于对代码的分析,1.x 版本并没有这样做。您可以扩展 RollingFileAppender 并使用它。我在答案中添加了代码,其中发生了翻转时的重命名。希望他的帮助。
    猜你喜欢
    • 2015-03-20
    • 2021-07-05
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    相关资源
    最近更新 更多