slf4j-log4j12 和 log4j-slf4j-impl 之间的区别

RBB*_*RBB 13 log4j log4j2

在一些使用 slf4j 和 log4j 的项目中,我可以看到类似的依赖关系

compile('org.apache.logging.log4j:log4j-core:version')
compile('org.apache.logging.log4j:log4j-api:version')
compile('org.apache.logging.log4j:log4j-slf4j-impl:version')
Run Code Online (Sandbox Code Playgroud)

但有些项目使用slf4j-log4j12而不是log4j-slf4j-impl。据我了解,它们都像 slf4j 和 log4j 之间的桥梁一样工作,但它们有什么区别?

Pio*_*asz 16

这些工件使用不同版本的 Log4j:

  • slf4j-log4j12是 SLF4J 和 Log4j 1.2 之间的桥梁。其版本遵循 SLF4J。
  • log4j-slf4j-impl是 SLF4J 1.x(最高 1.7.x)和 Log4j 2.x 之间的桥梁。其版本控制遵循 LOG4J2。
  • log4j-slf4j2-impl是 SLF4J 2.x(或更高版本)和 Log4j 2.x 之间的桥梁。其版本控制遵循 LOG4J2。

由于 Log4j 1.x 已于 7 年前终止生命,因此在新软件中使用第一个版本没有任何意义。

  • 是的,SLF4J 项目仅发布了 Log4j 1.x 的绑定(不会有“slf4j-log4j2”工件)。Log4j 2.x 的绑定由 Log4j 项目本身维护。 (4认同)