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

log4j1迁移log4j2的XML配置与原properties配置等价性校验

Log4j 1.x 迁移 Log4j2 2.17.1 配置等价性说明

原Log4j 1.x 配置(properties格式)

log4j.rootLogger=INFO,FILE,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %l - %m%n
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${jboss.server.log.dir}/application/application.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{dd-MM-yyyy HH:mm:ss} %l - %m%n
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd

待校验的Log4j2 XML配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="[%-5p] %d{yyyy-MM-dd HH:mm:ss} %l - %m%n" />
        </Console>
        <RollingFile name="DailyLog"
                 fileName="${env:JBOSS_HOME}/standalone/log/application/application.log"
                 filePattern="${env:JBOSS_HOME}/standalone/log/application/application.log.%d{yyyy-MM-dd}">
            <PatternLayout pattern="[%-5p] %d{dd-MM-yyyy HH:mm:ss} %l - %m%n"/>
            <Policies>
              <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="ConsoleAppender" />
            <AppenderRef ref="DailyLog"/>
        </Root>
    </Loggers>
</Configuration>

预期日志滚动效果

application.log.2022-06-05
application.log.2022-06-06
application.log  (Today, June 7th)

等价性校验结果

你在更新记录中提到的4项调整,已经修复了初版配置和Log4j 1.x行为不一致的核心问题:

  • 移除冗余的ImmediateFlush配置:Log4j2 2.17.1版本默认开启立即刷盘,和Log4j 1.x默认行为一致,不需要额外显式配置
  • 调整WildFly日志路径:修正了初版路径和JBoss默认日志目录不匹配的问题,默认场景下和原配置${jboss.server.log.dir}指向的路径一致;如果需要兼容自定义jboss.server.log.dir的场景,可以把路径中的${env:JBOSS_HOME}/standalone/log替换为${sys:jboss.server.log.dir}直接读取JBoss启动时注入的系统属性,兼容性更好
  • 移除多余的FileAppender:原配置只有控制台和按天滚动的文件两个输出端,移除后Appender数量和原配置完全对齐
  • 移除TimeBasedTriggeringPolicy的Interval属性:默认Interval值为1,对应按天滚动,和原配置DailyRollingFileAppender的日滚动规则完全匹配,滚动后生成的文件命名、当天日志写入无后缀文件的行为和预期完全一致。

目前配置还剩最后一处和原配置不等价的点:当前XML中Root日志级别配置为debug,而原Log4j 1.x配置的根日志级别为INFO,会导致输出大量原配置不会打印的DEBUG级别日志。把Root节点的level="debug"修改为level="INFO"后,整个配置就和原Log4j 1.x实现完全等价,没有缺失配置项,日志格式、输出目标、滚动规则都和原有行为一致。

帖子更新记录

  • 移除ImmediateFlush配置
  • 调整Wildfly路径
  • 移除FileAppender
  • 移除TimeBasedTriggeringPolicy的Interval属性

完成上述更新调整后,配置已可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:01:06