Java Log4J:带有sysdate的备份文件名
我想从log4j中命名备份文件,将sysdate附加到名称中,而不是filename.1、filename.2Java Log4J:带有sysdate的备份文件名,java,logging,log4j,Java,Logging,Log4j,我想从log4j中命名备份文件,将sysdate附加到名称中,而不是filename.1、filename.2 如何备份?如果您需要以特定频率备份文件,例如每分钟或每小时备份一次,则DailRollingFileAppender类将满足您的需要 但是,如果您需要在文件达到一定大小后进行归档,那么一个好方法可能是扩展RollingFileAppender类。您需要以如下类似的方式重写其rollover()方法: public void rollOver() { ... file = new Fi
如何备份?如果您需要以特定频率备份文件,例如每分钟或每小时备份一次,则
DailRollingFileAppender
类将满足您的需要
但是,如果您需要在文件达到一定大小后进行归档,那么一个好方法可能是扩展RollingFileAppender
类。您需要以如下类似的方式重写其rollover()
方法:
public void rollOver() {
...
file = new File(fileName + '.' + System.currentTimeMillis());
...
}
为此,您需要使用Log4J“extras”JAR(由Apache提供),并使用那里找到的
RollingFileAppender
(请参阅FileNamePattern
参数):
例如(取自那里的Javadoc):
Log4J社区已经完成了这项工作(请参见下面的答案)。我在重写rollOver()方法时遇到了一个问题。它无法通过扩展访问RollingFileAppender的私有属性class@AlexCuervo您是否尝试过setFile(fileName+'.+System.currentTimeMillis())
?@Isaac我认为此实现仅适用于固定的滚动周期。OP需要在文件达到大小限制后滚动的内容,但要有sysdate
,而不是滚动索引。@Reza搞错了。这适用于任何RollingFileAppender
的实现。配置将滚动策略和文件名格式分开。下面我提供的代码片段只是一个示例。如何在log4j.properties中配置它?只有使用XML配置log4j,使用DOMConfigurator
时,这种“更新的”配置工具才可用。基本上,您需要做的就是将log4j.properties
文件转换为XML格式,将其命名为log4j.XML
,并将其放置在类路径中。有关更多信息,请查看DOMConfigurator
。XML是Log4J配置的前进方向。
<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="/wombat/foo.%d{yyyy-MM}.gz"/>
</rollingPolicy>
</appender>