RollingFileAppender还删除早于某个日期的文件

时间:2013-07-29 18:37:47

标签: java log4j logback

任何流行的Java日志记录框架是否支持滚动文件追加器,我可以配置为每日滚动,还删除任何超过几天的日志文件?我知道我可以使用滚动文件appender和cron,但是想知道是否有人知道可以同时执行这两种操作的appender。

4 个答案:

答案 0 :(得分:1)

事实上,如果你使用Log4J,你可以使用这个appender:

非常,非常,非常容易使用,只需下载整个班级(是,上面链接中的类代码),将其包含在您的项目中(无论你在哪里想要,您可以更改包以在项目中匹配),然后像这样配置log4j.properties文件(此文件必须在您的类路径中,例如在src / main / resources中夹):

# Define the root logger with appender file
log = log
log4j.rootLogger = TRACE, FILE

# Define the logical path where you put the class you downloaded from "blog.kimb3r.com" link (above)
log4j.appender.FILE=com.yourapp.yourpackage.log.CustodianDailyRollingFileAppender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
log4j.appender.FILE.File=${log}/yourlogfile.log
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
# How many files you want to keep?, in this case I'm having just 15 days of files, one file per day:
log4j.appender.FILE.MaxNumberOfDays=15
# If True, the older files will be compressed into a zip file (*which will save you a lot of space on the server*)
log4j.appender.FILE.CompressBackups=true

除此之外,只需将log4j的依赖项添加到您的pom中,如下所示:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

就是这样!

答案 1 :(得分:1)

在Log4j上工作了一段时间之后,我读到Logback已经开发并设计成Log4j的继承者了,我不得不说,Logback是一个广泛的步进器!

例如,要配置此滚动文件Appender,并压缩旧日志,最多30个,在Log4J上您必须执行一些代码更改(请查看我的预览answer以获取更多详细信息) ,但是在logback上,一切都在配置文件上完成,如下所示:

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>log/logFile.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>log/logFile.%d{yyyy-MM-dd}.log.zip</fileNamePattern>

            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>[%-5level]: [%logger{35}] - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="trace">
        <appender-ref ref="FILE" />
    </root>
</configuration>

就是这样,你将解压当前的日志,以及每天拉链,每天一个zip文件。

比log4j更容易!

如果您想使用更多配置选项,请查看this link

答案 2 :(得分:0)

为什么不看this可能有帮助?

您可以设置最大nuber天数来保留日志。

  

log4j.rootLogger = INFO,FILE
  log4j.appender.FILE = ca.justtechnologies.utils.logging.CustodianDailyRollingFileAppender   log4j.appender.FILE.layout = org.apache.log4j.PatternLayout   log4j.appender.FILE.layout.ConversionPattern =%d {MMM dd yyyy   HH:mm:ss,SSS} [%t]%-5p%l - %m%n   log4j.appender.FILE.File =在/ var /日志/ Web的应用程序/ Dashboard.log   log4j.appender.FILE.DatePattern ='。'yyyy-MM-dd

     

<强> log4j.appender.FILE.MaxNumberOfDays = 14

     

log4j.appender.FILE.CompressBackups =真

答案 3 :(得分:0)

Logback的经典RollingFileAppender提供了此功能。手册(http://logback.qos.ch/manual/appenders.html#onRollingPolicies

中的示例配置
 <configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history -->
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

这提供每日翻转和30天的历史记录。将其放在名为logback.xml的文件中,或者将测试树放在logback-test.xml中,并将其放在类路径中。