You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Logback中保留7天日志归档并每日生成独立压缩包?

解决Logback每日归档并保留7天日志的问题

没问题,完全可以实现你的需求!我分两种常见场景给你讲具体配置方案,你可以根据实际需要选择:

场景1:保留最近7天的日期命名归档

如果你的需求是始终保留最近7天的日志归档,每天生成一个带日期的zip文件,第8天自动删除最早的那一份归档(始终保持7个文件),那调整RollingAppender的配置即可:

<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 当日日志的存储路径和文件名 -->
    <file>logs/current.log</file>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 归档文件命名规则:按日期生成zip,例如2024-05-20.zip -->
        <fileNamePattern>logs/archive/%d{yyyy-MM-dd}.zip</fileNamePattern>
        <!-- 保留最近7天的归档文件 -->
        <maxHistory>7</maxHistory>
        <!-- 可选:如果不需要按总日志大小限制归档,可注释此行 -->
        <!-- <totalSizeCap>10GB</totalSizeCap> -->
        <!-- 确保无论当日日志大小,到点都会触发归档 -->
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- 设置极小阈值,保证哪怕日志为空也会生成归档 -->
            <maxFileSize>1B</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

关键细节:

  • maxHistory=7 是核心参数,告诉Logback只保留最近7天的归档,超过的自动清理,正好匹配你“保留全部7天日志”的要求。
  • 搭配SizeAndTimeBasedFNATP和maxFileSize=1B,能确保不管当日日志量多少(哪怕是空日志),午夜都会触发归档操作,生成当天的zip文件。

场景2:固定7个序号命名归档(1.zip到7.zip循环覆盖)

如果你希望归档文件是固定的1.zip到7.zip(对应周一到周日),每周循环覆盖旧文件,那可以利用Logback的%u占位符(代表星期几,1=周一,7=周日)配置:

<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/current.log</file>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 用%u作为归档文件名,生成1.zip到7.zip -->
        <fileNamePattern>logs/archive/%u.zip</fileNamePattern>
        <!-- 这里maxHistory设大一些,靠%u自动循环覆盖,避免文件堆积 -->
        <maxHistory>365</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>1B</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

这样配置后,每个星期几的日志都会归档到对应序号的zip文件,比如周一的日志始终存在1.zip,下周一的归档会自动覆盖旧的1.zip,始终保持7个归档文件,完全符合你提到的命名需求。

额外注意

  • 建议使用Logback 1.2.x及以上版本,旧版本对部分参数的支持可能不完善。
  • 归档目录(比如logs/archive)无需手动创建,Logback会自动生成对应的父目录。

内容的提问来源于stack exchange,提问作者BHAWIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:21:32