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

Spring Boot 2.4.6升级2.6.6后报log4j无appenders警告如何解决

问题产生原因

Spring Boot从2.4.x升级到2.6.6版本后,默认的日志依赖路由规则发生变更:

  • 2.4.x版本默认内置了log4j 1.x到SLF4J/Log4j2的自动桥接逻辑,即使项目中有第三方组件传递引入log4j 1.x原生依赖,也会自动被桥接包替换,不会触发原生1.x的初始化流程
  • 2.6.x版本调整了日志依赖的优先级,当项目中存在log4j 1.x原生依赖时,会优先触发1.x版本的初始化逻辑。你项目中使用的log4j2.xml是Log4j2专属配置文件,Log4j 1.x无法识别该配置,因此触发无appender的警告,同时日志输出链路被1.x实现截断,导致控制台无正常业务日志打印。
可行解决方案
  • 排除残留的log4j 1.x原生依赖
    执行mvn dependency:tree查看依赖树,找到所有传递引入log4j:log4j(1.x版本)的依赖项,在对应依赖中添加排除规则,示例配置:
    <exclusion>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </exclusion>
    
  • 引入log4j 1.x到Log4j2的官方桥接包
    排除原生1.x依赖后,引入官方桥接依赖,所有原本调用log4j 1.x接口的代码会自动转发到Log4j2实现,不需要修改现有log4j2.xml配置:
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
    </dependency>
    
  • 校验配置文件打包规则
    检查maven-resources-plugin等构建插件的配置,确认src/main/resources下的log4j2.xml没有被过滤规则排除,最终构建出的jar包/classes目录下存在该配置文件。如果存在过滤问题,可在pom.xml中明确添加资源包含规则:
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.yml</include>
                </includes>
            </resource>
        </resources>
    </build>
    
  • 初始化流程排查
    启动应用时添加JVM参数-Dlog4j.debug,控制台会打印日志实现的具体加载过程、配置文件搜索路径,可以快速定位是依赖冲突还是配置文件未加载的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:36:17