有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java RollingFileAppender,它还删除超过某个日期的文件

有没有流行的Java日志框架支持滚动文件追加器,我可以将其配置为每天滚动,也可以删除任何超过几天的日志文件?我知道我可以使用滚动文件appender和cron,但我想知道是否有人知道appender可以同时完成这两个功能


共 (4) 个答案

  1. # 1 楼答案

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

    您可能可以设置保留日志的最大天数

    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/log/web-apps/Dashboard.log log4j.appender.FILE.DatePattern='.'yyyy-MM-dd

    log4j.appender.FILE.MaxNumberOfDays=14

    log4j.appender.FILE.CompressBackups=true

  2. # 2 楼答案

    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测试。xml用于测试树,并将其放置在类路径中

  3. # 3 楼答案

    在Log4j上工作了一段时间后,我读到Logback是为了成为Log4j的继承者而开发和设计的,我不得不说,Logback是一个宽步进器

    例如,要在Log4J上配置这个滚动文件Appender,压缩旧日志,最多30个,您必须执行一些代码更改(请查看我的预览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,每天一个zip文件

    比log4j更简单

    如果你想使用更多的配置选项,只需选中this link

  4. # 4 楼答案

    实际上,如果您使用的是Log4J,那么您可以使用这个appender:

    它非常、非常、非常容易使用,只需下载整个类(是的,上面链接中的类代码),将其包含在项目中(无论你想在哪里,你都可以在项目中更改包以匹配),然后配置log4j。类似这样的属性文件(该文件必须位于类路径中,例如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>
    

    就这样