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

Gradle环境下Spring Boot排除Logback依赖的问题解决

解决Spring Boot + Gradle中日志框架冲突导致的ClassNotFoundException与LoggerFactory错误

问题原因

Spring Boot的spring-boot-starter默认集成了Logback作为日志实现,手动引入slf4j-log4j12后会引发两类冲突:

  1. 项目类路径同时存在Logback和log4j12的SLF4J绑定,SLF4J检测到冲突后抛出LoggerFactory is not a Logback LoggerContext提示;
  2. Spring Boot部分组件依赖Logback的核心类,但slf4j-log4j12会覆盖默认的Logback绑定,导致运行时找不到ch.qos.logback.classic.turbo.TurboFilter这类Logback类,触发ClassNotFoundException。

解决方案

1. 排除spring-boot-starter中的Logback依赖

在Gradle配置里,给spring-boot-starter添加排除规则,移除自带的Logback依赖:

implementation group: 'org.springframework.boot', name: 'spring-boot-starter', version:'2.0.4.RELEASE', {
    exclude group: 'ch.qos.logback', module: 'logback-classic'
}
implementation 'org.slf4j:slf4j-log4j12:1.7.28'

注:Spring Boot 2.x版本推荐使用implementation替代旧的compile指令,保持依赖配置统一。

2. 添加log4j配置文件

在项目的src/main/resources目录下创建log4j.properties(或log4j.xml)配置文件,避免log4j使用默认配置引发警告。示例配置:

# 根日志级别与输出端
log4j.rootLogger=INFO, stdout
# 控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# 日志输出格式
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

3. 排查潜在的依赖冲突(可选)

如果按上述配置后仍有问题,用Gradle的dependencyInsight命令查看依赖树,确认是否有其他依赖偷偷引入了Logback:

./gradlew dependencyInsight --dependency logback-classic

根据输出结果,给对应依赖添加排除规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:02:37