logback maxhistory

本文深入解析Logback自动删除功能的核心机制,包括`maxHistory`参数的作用,以及如何通过代码实现文件自动清理。通过实例展示,帮助开发者理解和应用这一特性。

最近要用的logback 自动删除功能,经过测试和查看源代码发现

maxhistory指的是删除时间格式最小单位的前多少分/小时/天...的文件,

而且只是删除单个文件,假如删除前3分钟的文件,前四分钟的文件不会删除哦,及时文件名格式符合要求。


  @Override
  public void clean(Date now) {
    Date dateOfPeriodToClean = rc.getRelativeDate(now, periodOffsetForDeletionTarget);


     // 是具体到那个时间点的,例如:2015-07-04_13:28.log
    String regex = fileNamePattern.toRegex(dateOfPeriodToClean);
    String stemRegex = FileFilterUtil.afterLastSlash(regex);
    File archive0 = new File(fileNamePattern.convertMultipleArguments(
        dateOfPeriodToClean, 0));


    File parentDir = archive0.getParentFile();
    File[] matchingFileArray = FileFilterUtil.filesInFolderMatchingStemRegex(
        parentDir, stemRegex);


    for (File f : matchingFileArray) {
      f.delete();
    }


    if (parentClean) {
      removeFolderIfEmpty(parentDir, 0);
    }
  }

配置文件



<appender name="MONITER_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${moniter.log.path}/monitor_message.%d{yyyy-MM-dd_HH:mm}.log
</fileNamePattern>
<maxHistory>120</maxHistory>

</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>

在 `logback-spring.xml` 配置文件中,`maxHistory` 属性通常用于配置日志归档的保留时间,例如在 `<rollingPolicy>` 或 `<timeBasedFileNamingAndTriggeringPolicy>` 等标签中使用。`maxHistory` 的作用是控制日志文件的最大保留天数或周期数,以防止日志文件占用过多磁盘空间。 关于 `maxHistory` 属性的最大值限制,Logback 框架本身 **并没有硬性限制** 其最大值。`maxHistory` 的取值范围主要取决于以下因素: - **系统资源**:如果设置的 `maxHistory` 值过大,可能导致大量日志文件被保留,从而占用较多磁盘空间。 - **日志滚动策略**:例如在基于时间的滚动策略(`TimeBasedRollingPolicy`)中,`maxHistory` 表示保留的周期数(如天数或月数),其实际影响取决于日志滚动的时间单位[^1]。 在实际应用中,建议根据业务需求和服务器资源合理设置该值。例如,若使用按天滚动策略,且仅需保留最近 30 天的日志,则配置如下: ```xml <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天滚动一次 --> <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 保留最近30天的日志 --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration> ``` 在上述配置中,`<maxHistory>30</maxHistory>` 表示只保留最近 30 天的日志文件,超过该时间的日志将被自动删除。 ### 相关问题 1. logback-spring.xml 中如何配置日志文件的自动清理策略? 2. logback 的 TimeBasedRollingPolicy 是如何工作的? 3. maxHistory 设置为 0 是否有效?其行为如何? 4. 如何通过 logback-spring.xml 控制日志文件的大小和滚动策略? 5. logbackmaxHistory 和 totalSizeCap 的区别是什么?
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值