导读:本期聚焦于小伙伴创作的《Log4j2 RollingFile 仅保留最近4天日志的解决方案是什么》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Log4j2 RollingFile 仅保留最近4天日志的解决方案是什么》有用,将其分享出去将是对创作者最好的鼓励。

Log4j2的RollingFile appender是常用的日志滚动输出组件,通过合理配置其策略参数,就可以实现仅保留最近4天日志的需求,避免历史日志无限制堆积占用磁盘空间。

Log4j2 RollingFile 仅保留最近4天日志的解决方案是什么

核心配置思路

要实现仅保留最近4天的日志,核心是使用TimeBasedTriggeringPolicy作为触发策略,配合DefaultRolloverStrategymax参数控制保留的日志文件数量。时间滚动的粒度需要和保留天数匹配,确保max值对应4天的日志文件总数。

基础配置示例

以下是按天滚动、仅保留最近4天日志的完整Log4j2配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="logs/app-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
            <!-- 按天触发滚动 -->
            <TimeBasedTriggeringPolicy interval="1"/>
            <!-- 保留最近4个日志文件,对应4天 -->
            <DefaultRolloverStrategy max="4"/>
        </RollingFile>
    <Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="RollingFile"/>
        </Root>
    <Loggers>
</Configuration>

配置参数说明

filePattern参数

该参数定义滚动后的日志文件命名规则,其中%d{yyyy-MM-dd}表示按天生成时间后缀,如果改成%d{yyyy-MM-dd-HH}则表示按小时滚动,此时max值需要对应4天的总小时数。

TimeBasedTriggeringPolicy

interval属性表示滚动的时间间隔,和filePattern中的时间单位一致,设置为1表示每间隔1个时间单位触发一次滚动。比如按天滚动时interval为1,按小时滚动时interval也为1。

DefaultRolloverStrategy

max属性表示最多保留的滚动日志文件数量,当滚动生成的日志文件超过该值时,最旧的日志文件会被自动删除。这里按天滚动时,设置为4就正好保留最近4天的日志。

组合滚动场景配置

如果同时需要按大小和按时间滚动,可以搭配SizeBasedTriggeringPolicy,配置示例如下:

<RollingFile name="RollingFile" fileName="logs/app.log"
             filePattern="logs/app-%d{yyyy-MM-dd}-%i.log">
    <PatternLayout>
        <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
    </PatternLayout>
    <Policies>
        <!-- 按天滚动 -->
        <TimeBasedTriggeringPolicy interval="1"/>
        <!-- 单个文件超过100MB时滚动 -->
        <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <!-- 每个时间单位内最多保留4个文件,整体保留最近4天的所有文件 -->
    <DefaultRolloverStrategy max="4"/>
</RollingFile>

这里filePattern增加了%i作为同一时间单位内的文件序号,当单个日志文件达到100MB时会生成新的序号文件,max控制每个时间单位内最多保留4个文件,整体保留最近4天的所有日志文件。

常见问题排查

  • 如果日志没有按预期删除,首先检查filePattern的时间格式是否和TimeBasedTriggeringPolicy的间隔匹配,不匹配会导致滚动逻辑异常。
  • 确认DefaultRolloverStrategymax值是否设置正确,不要漏写该参数,默认情况下可能会保留更多日志文件。
  • 如果使用了自定义的删除策略,需要检查Delete标签的配置是否正确,避免和默认的滚动策略冲突。

Log4j2RollingFile日志保留策略日志滚动修改时间:2026-06-15 10:21:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。