You need to enable JavaScript to run this app. log4j1.1.x 按天+按大小复合滚动及日志备份的xml配置方法
优惠活动
大模型
产品
解决方案
定价
更多

log4j1.1.x 按天+按大小复合滚动及日志备份的xml配置方法

Log4j 1.1.x 配置调整方案

当前配置仅启用了基础按天滚动逻辑,未关联大小触发、自动压缩、保留周期的参数定义,通过修改滚动策略的参数配置,可在不替换原有appender的前提下覆盖全部需求,配置完全适配Windows系统的文件路径规则。

核心配置调整点

  • 为TimeBasedRollingPolicy补充滚动文件命名规则,实现跨日自动滚动、滚动文件自动压缩能力
  • 嵌套配置大小触发策略,满足单文件100MB的容量阈值滚动要求
  • 增加滚动文件保留周期参数,实现压缩日志仅保留7天的自动清理逻辑
  • 保留原有日志格式定义、INFO级别的全局日志配置

调整后完整配置文件

<?xml version="1.0"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="RollingAppender" class="org.apache.log4j.rolling.RollingFileAppender">
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <!-- 写入中的活跃日志文件路径 -->
            <param name="ActiveFileName" value="logs/app.log"/>
            <!-- 滚动文件命名模板:按日期+当日文件序号命名,后缀.gz触发自动压缩 -->
            <param name="FileNamePattern" value="logs/app.%d{yyyy-MM-dd}.%i.log.gz"/>
            <!-- 滚动归档文件最长保留天数,超期自动删除 -->
            <param name="MaxHistory" value="7"/>
            <!-- 嵌套触发规则:当前写入文件达到100MB时立刻触发滚动 -->
            <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
                <param name="MaxFileSize" value="100MB"/>
            </triggeringPolicy>
        </rollingPolicy>
        
        <layout class="org.apache.log4j.EnhancedPatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t][%c{1}:%L] %m%n" />
        </layout>
    </appender>
    
    <root>
        <priority value="INFO" />
        <appender-ref ref="RollingAppender" />
    </root>
</log4j:configuration>

各需求匹配校验

  • 每日滚动触发:FileNamePattern中的%d{yyyy-MM-dd}占位符会自动识别自然日边界,跨日时触发滚动,满足每日滚动要求
  • 100MB容量阈值触发:嵌套的SizeBasedTriggeringPolicy会实时监控当前写入的活跃日志文件大小,达到100MB时立刻触发滚动,同日内拆分的多个文件通过%i序号区分,不会出现文件名冲突
  • 滚动日志自动压缩:FileNamePattern后缀指定为.gz,所有非活跃的滚动日志会自动通过Gzip算法压缩,Windows环境下该逻辑为组件原生支持,无需依赖外部工具
  • 7天保留周期:MaxHistory=7参数会按天维度清理超过7个归档周期的压缩日志,无需手动处理磁盘文件
  • 指定格式写入:完全保留原有EnhancedPatternLayout的转换规则,日志输出格式和原有定义一致
  • INFO级别设置:保留root节点的priority=INFO配置,低于INFO级别的DEBUG、TRACE日志不会被写入

注意:配置中使用的org.apache.log4j.rolling包属于Log4j 1.x的扩展组件,需确保项目依赖中引入对应版本的apache-log4j-extras包,否则会出现类加载异常。


内容的提问来源于stack exchange,提问作者Jürgen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 01:45:04