首页 > 解决方案 > Logback-classic 通过不同的依赖与 SLF4J 发生冲突

问题描述

我有一个内部库,它已升级为使用logstash,它具有强制依赖关系logback,因此logback-classic它在其包内部有自己的 slf4j 附加程序,这意味着我不能在这里排除任何库)。

当我尝试将此依赖项用作任何其他遗留模块(它们都在使用slf4j-log4j12)的 jar 时,我确实收到了日志依赖地狱消息:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/asdf/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/asdf/.m2/repository/org/slf4j/slf4j-log4j12/1.7.26/slf4j-log4j12-1.7.26.jar!/org/slf4j/impl/StaticLoggerBinder.class]

但问题本身是我不能只排除 logback-classic,因为它是 logstash 的强制要求,而且我不能迁移我的应用程序以使用 logback,因为它们配置了 log4j.xml

有没有一种方法可以强制 slf4j 使用应用程序附加程序而不是来自 logback 库的附加程序,或者,是否有任何其他想法可以让一个给定的使用附加程序,其余的使用其他?

标签: logstashslf4jlogback-classiclogstash-logback-encoder

解决方案


推荐阅读