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

从Log4j1.2升级至Log4j2.19.0启动服务器时遇报错求助

Log4j 1.2.17升级到2.19.0启动错误解决

错误原因分析

你碰到的核心问题是Log4j 1.x和2.x的API完全不兼容:

  • 旧的org.apache.log4j.Appender是Log4j 1.x的接口,而新的org.apache.logging.log4j.core.appender.RollingFileAppender属于Log4j 2.x体系,两者没有继承关系,自然无法赋值。
  • 配置文件还是Log4j 1.x的格式(比如log4j.appender.xxx这类配置项),Log4j 2.x无法识别,导致找不到对应的appender实例。

解决步骤

  1. 彻底清理Log4j 1.x依赖
    检查项目的依赖库(比如WEB-INF/lib),删除所有log4j 1.x相关的jar包(比如log4j-1.2.17.jar),避免类加载冲突。

  2. 正确引入Log4j 2.x依赖
    如果用Maven管理依赖,添加以下配置(根据项目需要调整):

    <dependencies>
        <!-- Log4j 2.x核心依赖 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.19.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.19.0</version>
        </dependency>
        <!-- 可选:如果项目代码中有大量Log4j 1.x的直接调用,用桥接包过渡 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-1.2-api</artifactId>
            <version>2.19.0</version>
        </dependency>
    </dependencies>
    

    非Maven项目的话,直接下载对应版本的jar包放到WEB-INF/lib下。

  3. 升级配置文件
    Log4j 2.x不再支持1.x的log4j.properties或log4j.xml格式,需要换成log4j2.xml(推荐)或log4j2.properties。
    举个简单的RollingFileAppender配置示例(log4j2.xml):

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <!-- 控制台输出 -->
            <Console name="console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
            <!-- 滚动文件输出 -->
            <RollingFile name="turbine" fileName="logs/turbine.log"
                         filePattern="logs/turbine-%d{yyyy-MM-dd}-%i.log.gz">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="100MB"/>
                </Policies>
                <DefaultRolloverStrategy max="10"/>
            </RollingFile>
        </Appenders>
        <Loggers>
            <Root level="info">
                <AppenderRef ref="console"/>
                <AppenderRef ref="turbine"/>
            </Root>
        </Loggers>
    </Configuration>
    

    把原来的配置项按照Log4j 2.x的语法重新编写,确保appender的名称和代码中的引用一致。

  4. 检查代码中的API引用
    如果代码里有直接import org.apache.log4j.*的地方,要么改成Log4j 2.x的API(比如org.apache.logging.log4j.*),要么通过log4j-1.2-api桥接包兼容旧代码(但桥接包仅支持部分1.x的API,复杂场景可能需要修改代码)。


内容的提问来源于stack exchange,提问作者M. Rajesh Kumar Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:31:35