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

编译日志出现log4j 1.2.12但mvn依赖树不显示,求排查与升级方法

排查log4j 1.2.12引入来源并升级至2.x版本

一、排查log4j 1.2.12的引入来源

  • 执行mvn dependency:tree -Dverbose命令:默认dependency:tree不会展示可选依赖,添加-Dverbose参数可列出所有传递依赖(包括被排除的和可选的),便于定位log4j 1.2.12的引入路径。
  • 检查Maven插件依赖:从日志看下载动作发生在maven-compiler-plugin的compile阶段,可能是老版本插件(如编译、测试插件)间接引入了log4j 1.x。可查看项目pom.xml的插件配置,或用mvn help:describe -Dplugin=maven-compiler-plugin:3.1 -Ddetail查看该插件的依赖树。
  • 执行mvn dependency:list命令:该命令会列出项目所有已解析的依赖(含groupId、artifactId、版本),确认log4j 1.2.12是否在列表中,再结合dependency:tree -Dverbose锁定来源。
  • 查看本地Maven仓库:找到本地仓库中log4j 1.2.12的目录,查看_remote.repositories文件,可获取该jar包的引入关联信息(针对传递依赖场景)。

二、升级至log4j 2.x版本

1. 排除log4j 1.x依赖

通过上述方法定位到引入log4j 1.2.12的依赖后,在pom.xml中添加排除规则:

<dependency>
    <groupId>[依赖的groupId]</groupId>
    <artifactId>[依赖的artifactId]</artifactId>
    <version>[依赖版本]</version>
    <exclusions>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

若为插件依赖引入,可在插件配置中添加排除:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <dependencies>
        <dependency>
            <groupId>[插件依赖的groupId]</groupId>
            <artifactId>[插件依赖的artifactId]</artifactId>
            <version>[插件依赖版本]</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</plugin>

2. 引入log4j 2.x核心依赖

在pom.xml中添加log4j 2.x的API和核心包(建议使用最新稳定版本):

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>

若项目存在遗留的log4j 1.x代码需兼容,添加适配桥接包:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.20.0</version>
</dependency>

3. 替换配置文件

将原log4j.properties或log4j.xml替换为log4j 2.x的配置文件(如log4j2.xml),适配2.x配置语法,示例:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:31:58