我们正在尝试升级我们的日志记录。我们使用 gradle 文件更新这些包:
implementation "org.slf4j:slf4j-api:1.7.6"
implementation "ch.qos.logback:logback-classic:1.2.3"
implementation "ch.qos.logback:logback-core:1.2.3"
到
implementation "org.slf4j:slf4j-api:2.0.5"
implementation "ch.qos.logback:logback-classic:1.4.5"
implementation "ch.qos.logback:logback-core:1.4.5"
但是,在进行此更新时,我们收到以下错误:
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
我们正在使用 spring-boot,但排除了它的日志包,这些包适用于上面看到的日志包的早期版本。这是通过以下方式完成的:
configurations {
all*.exclude module: 'spring-boot-starter-logging'
}
我们相信对所示的这些新版本使用了正确的更新依赖项。我们不确定是什么导致了这个问题,因为我们遵循了其他建议,但没有任何运气。如果有人可以提供帮助,我们将不胜感激。
谢谢你
StaticLoggerBinder 不存在于版本中
org.slf4j-2.0.5.
据我所知,您可以在这里找到 StaticLoggerBinder 的依赖关系
group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.19.0'
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl
我还检查过,即使在最新版本中也存在 StaticLoggerBinder,即
2.19.0
另外,我检查了你的旧版本
slf4j-api 1.7.6.
https://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.6
该依赖项也没有 StaticLoggerBinder,但它存在于我上面提供的
log4j-slf4j-impl
的依赖项中。
其实原因是logback-classic从v1.3.0中删除了org/slf4j/impl/StaticLoggerBinder,而spring-boot 2.x只支持logback到v1.2.x(目前是1.2.12)。
相关问题如下: https://github.com/spring-projects/spring-boot/issues/34708 https://github.com/spring-projects/spring-boot/issues/12649