logstash - 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 库的附加程序,或者,是否有任何其他想法可以让一个给定的包使用附加程序,其余的使用其他?
解决方案
推荐阅读
- python - CNN 文本文档分类与 Keras:如何拟合“两个输入的独立层”的模型
- c# - WPF ListView - 资源和 ItemContainerStyle
- python - Visual Studio Community 2017 中 Python 的语法颜色编码损坏
- npm - 如何更新 package-lock.json 中的一个包的依赖关系
- react-native - 本机模块不能为空,但应用程序工作正常
- reactjs - 反应路由器卸载功能组件
- git - 我可以 git diff 一个名称已更改的文件吗?
- python - 验证字符串中的“合理”字符
- swift - 为什么在 Xcode 中使用这个 Swift 代码不起作用?
- tcl - thread::join 如何运行脚本?