log4j - 将备份日志文件的RollingFileAppender配置为DailyRollingFileAppender

时间:2014-11-21 07:47:10

标签: java logging log4j rollingfileappender

我们是否可以将RollingFileAppender get函数配置为DailyRollingFileAppender。这意味着我想每天备份(旋转)日志文件,使用“最大文件大小”和“日志文件可以保留的最大日期数”(RollingFileAppender相关的maxBackupIndex和maxFileSize属性)。问题是,使用DailyRollingFileAppender,我们无法配置maxBackupIndex和maxFileSize属性。谢谢。

1 个答案:

答案 0 :(得分:5)

不幸的是,这不可能使用log4j的标准API,甚至使用额外的 1

但是,您可以使用Simon Park开发的课程uk.org.simonsite.log4j.appender.TimeAndSizeRollingAppender 2

如果您使用基于XML的配置,这是一个示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration>
<log4j:configuration>

    <appender name="ROLL" class="uk.org.simonsite.log4j.appender.TimeAndSizeRollingAppender">
        <param name="File" value="app.log"/>
        <param name="DatePattern" value=".HHmmss"/>
        <param name="MaxFileSize" value="10KB"/>
        <param name="MaxRollFileCount" value="5"/>
        <layout class="org.apache.log4j.SimpleLayout" />
    </appender>

    <root>
        <appender-ref ref="ROLL"/>
    </root>

</log4j:configuration> 

对于此特定示例,生成的文件类似于:

app.log
app.log.155144.1
app.log.155144.2
app.log.155144.3
app.log.155144.4
app.log.155144.5
app.log.155400.1
app.log.155400.2
app.log.155400.3
app.log.155400.4
app.log.155400.5
app.log.161646.1
app.log.161646.2
app.log.161646.3
app.log.161646.4
app.log.161646.5
app.log.161706.1
app.log.161706.2
app.log.161706.3
app.log.161706.4

备注

  1. 适用于Apache log4j™的Apache Extras™ http://logging.apache.org/log4j/extras/
  2. 您需要从http://www.simonsite.org.uk/download.htm下载相应的jar,或者如果您使用的是Maven,请添加到pom.xml
  3.     <repositories>
            <repository>
                <id>opencast-public</id>
                <url>http://repository.opencastproject.org/nexus/content/repositories/public/</url>
            </repository>
            ...
        </repositories>
        ...
        <dependencies>
            <dependency>
                <groupId>uk.org.simonsite</groupId>
                <artifactId>log4j-rolling-appender</artifactId>
                <version>20131024-2017</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            ...
        </dependencies>