- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个非常简单的应用程序,以便我可以理解 slf4j、桥接库、日志记录实现等。我的应用程序依赖于 slf4j,它使用 logback 进行日志记录实现。此外,它还引入了一个包含 commons-logging 库的库。
应用程序依赖项:
dependencies {
compile project(':library-with-jcl')
compile group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.25'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}
库依赖项:
dependencies {
compile group: 'commons-logging', name: 'commons-logging', version: '1.2'
}
当我不包含jcl-over-slf4j
时,该库将按预期通过 JCL 输出其日志记录。当我做包含jcl-over-slf4j
时,任何通过JCL记录器进行的日志记录都会被slf4j拾取并重定向到logback。
我一直在互联网上阅读文章,这些文章说如果我的应用程序依赖于 slf4j 和依赖于 JCL 的库,我必须排除 commons-logging
依赖项。然而,这似乎没有必要,我不明白为什么。在什么情况下我必须排除 JCL 依赖性?我这里的例子是否太简单而无法暴露潜在的问题?
此外,我没有看到必须排除的建议,例如,如果我使用 log4j 桥,则依赖于它的库中的 log4j 依赖项。为什么不? JCL是特例吗?
最佳答案
JCL 和 SLF 都是日志外观,即它们只是抽象日志实现的 API。
JUL (java.util.logging
) 和 Logback 是日志记录实现。默认情况下,JCL会调用JUL,SLF会调用Logback。
为什么您需要两个 Activity 的日志记录实现,需要单独配置,并且必须记录到不同的日志文件?
您不这样做,并且您的应用程序已选择使用 Logback,并选择 JCL 应调用 SLF (jcl-over-slf4j
),因此代码是否正确并不重要调用JCL或SLF,日志记录将由Logback完成。
因此,您需要删除(排除)由库依赖项添加的重复 JCL 外观,该外观现在由 jcl-over-slf4j
实现。
关于java - 为什么在使用 slf4j 时排除公共(public)日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53717043/
我是一名优秀的程序员,十分优秀!