在一些使用 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')
但有些项目使用 slf4j-log4j12 而不是 log4j-slf4j-impl。据我了解,它们都是 slf4j 和 log4j 之间的桥梁,但它们有什么区别?
这些工件使用不同版本的 Log4j:
slf4j-log4j12
是SLF4J和Log4j 1.2之间的桥梁。它的版本遵循 SLF4J。slf4j-reload4j
是SLF4J和Reload4j(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 年前终止生命,因此在新软件中使用第一个版本没有任何意义。