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

Spring Boot 1.5.9无法识别Log4j2依赖仍查找Logback求助

Spring Boot 1.5.9 切换Log4j2时Logback类找不到的问题解决

你遇到的这个问题我太熟悉了——明明在Maven里排除了spring-boot-starter-logging,也引入了spring-boot-starter-log4j2,甚至依赖树里已经看不到Logback的影子,启动时还是抛出:

Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/classic/turbo/TurboFilter

这是因为Spring Boot 1.5.x版本的日志系统自动探测逻辑有点“顽固”,哪怕依赖被移除,初始化时还是会尝试加载Logback相关类。给你几个亲测有效的解决步骤:

1. 强制指定使用Log4j2 LoggingSystem

这是最直接的解决办法,跳过Spring Boot的自动探测逻辑,直接告诉它用Log4j2的日志系统:

  • 方式一:通过配置文件指定
    在application.properties里添加:
spring.logging.system=org.springframework.boot.logging.log4j2.Log4j2LoggingSystem

或者在application.yml里:

spring:
  logging:
    system: org.springframework.boot.logging.log4j2.Log4j2LoggingSystem
  • 方式二:启动时通过系统属性指定
    如果配置文件还没来得及加载就触发了日志初始化(比如你的启动类用了自定义SpringApplicationBuilder),可以在main方法里先设置系统属性:
public static void main(String[] args) {
    System.setProperty("spring.logging.system", "org.springframework.boot.logging.log4j2.Log4j2LoggingSystem");
    new SpringApplicationBuilder(Test.class).run(args);
}

2. 再次确认是否完全排除Logback依赖

虽然你说依赖树里看不到,但可以用Maven命令再精准排查一遍:

mvn dependency:tree -Dincludes=ch.qos.logback

如果输出里还有Logback的依赖,找到对应的父依赖,在它的<exclusions>里加上Logback的排除配置,确保彻底移除。

3. 清理缓存避免旧依赖干扰

有时候Maven或IDE的缓存会残留旧依赖,导致问题:

  • 执行Maven命令清理并重新构建:
mvn clean install -U
  • 在IDE里(比如IntelliJ IDEA/Eclipse)清理缓存并重启,确保加载的是最新的依赖。

补充说明

Spring Boot 1.5.x属于比较老的版本,日志系统的自动适配逻辑不如2.x版本完善,所以强制指定LoggingSystem是解决这类问题的关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:44:25