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

Log4j 1.x迁移至2.17.1遇XML配置前缀绑定错误求助

解决Log4j 2.x配置XML前缀绑定错误及适配问题

你遇到的错误根源是当前用的是Log4j 1.x的配置格式,Log4j 2.x完全不兼容这种基于DTD的旧配置,必须改用Log4j 2.x专属的XML Schema格式,同时配置项、类名、结构都要对应调整。以下是完整的修正配置和关键说明:

修正后的TEST_log4j.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" xmlns="http://logging.apache.org/log4j/2.0/config">
    <!-- 控制台输出Appender -->
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{MM/dd HH:mm:ss} %-5p %30.30c %ndc - %m%n"/>
        </Console>
        <!-- 文件滚动输出Appender(MyCustomClass日志) -->
        <RollingFile name="Fileappender" fileName="/opt/tomcat/logs/MyCustomClassLogs.log"
                     filePattern="/opt/tomcat/logs/MyCustomClassLogs-%i.log">
            <PatternLayout pattern="%d{MM/dd HH:mm:ss} %-5p %30.30c %ndc - %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="5MB"/>
            </Policies>
            <DefaultRolloverStrategy max="5"/>
        </RollingFile>
        <!-- 文件滚动输出Appender(ResetClass日志) -->
        <RollingFile name="ResetClass" fileName="/opt/tomcat/logs/resetTrace.log"
                     filePattern="/opt/tomcat/logs/resetTrace-%i.log">
            <PatternLayout pattern="%d{MM/dd HH:mm:ss} %-5p %30.30c %ndc - %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="1MB"/>
            </Policies>
            <DefaultRolloverStrategy max="5"/>
        </RollingFile>
    </Appenders>

    <!-- 日志Logger配置 -->
    <Loggers>
        <Logger name="com.demo.custom.filter.ResetClass" level="TRACE" additivity="false">
            <AppenderRef ref="ResetClass"/>
        </Logger>
        <Logger name="com.demo.custom.test.MyCustomClass" level="TRACE" additivity="false">
            <AppenderRef ref="Fileappender"/>
        </Logger>
        <!-- 根日志配置 -->
        <Root level="ERROR">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
    </Loggers>
</Configuration>

关键修改点说明

  • 命名空间与Schema替换:移除Log4j 1.x的DOCTYPE声明,改用Log4j 2.x的命名空间xmlns="http://logging.apache.org/log4j/2.0/config",直接解决前缀绑定错误
  • Appender类名更新:
    • Log4j1的org.apache.log4j.ConsoleAppender → Log4j2的<Console>标签(底层对应org.apache.logging.log4j.core.appender.ConsoleAppender)
    • Log4j1的org.apache.log4j.RollingFileAppender → Log4j2的<RollingFile>标签(底层对应org.apache.logging.log4j.core.appender.RollingFileAppender)
  • 配置项结构调整:
    • 原<param>标签替换为专属配置节点,比如文件滚动策略拆分到<Policies>和<DefaultRolloverStrategy>中
    • 原MaxFileSize改为<SizeBasedTriggeringPolicy size="5MB"/>,MaxBackupIndex改为<DefaultRolloverStrategy max="5"/>
  • 日志级别与Logger标签:
    • 原<category>替换为<Logger>,<priority>替换为level属性
    • 原<root>替换为<Root>,级别值统一用大写(比如error→ERROR)
  • 格式符调整:原Log4j1的%x(NDC)在Log4j2中改为%ndc,如果是MDC则用%X,这里按照你原配置的意图替换为%ndc

额外注意事项

  1. 确保项目依赖中完全移除Log4j 1.x的jar包,只保留Log4j 2.17.1的核心依赖(log4j-core、log4j-api)
  2. 若用Maven/Gradle管理依赖,建议主动排除所有Log4j 1.x的传递依赖,避免版本冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:25:19