在OSGI / Eclipse中使用Log4j2.10和slf4j-api 1.8

时间:2018-02-16 15:09:19

标签: osgi slf4j log4j2 serviceloader

我正在尝试在我的eclipse项目中使用Log4j2.10和slf4j-api 1.8 beta1。 我无法让绑定工作,slf4j抱怨:

SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.

它适用于Log4j 2.9.1和slf4j-api 1.7.24,它使用的是staticLoggerBinder机制,slf4j 1.8不再支持

我的eclipse插件取决于

org.apache.logging.log4j.osgi,
org.apache.logging.log4j.api,
org.apache.logging.log4j.core,
org.apache.logging.log4j.slf4j-impl,
slf4j.api

问题是在LoggerFactory(slf4j-api)中,ServiceLoader.load(SLF4JServiceProvider.class)调用返回任何空列表,因此找不到org.apache.logging.log4j.slf4j-impl的spi文件或者没有加载。

我有什么遗漏才能让它发挥作用吗?

提前致谢,

罗布

2 个答案:

答案 0 :(得分:2)

您可以使用foo{ }进行绑定,如本official documentation所述。

答案 1 :(得分:0)

Log4j2与slf4j-api版本1.8.x尚不兼容,后者现在使用由JPMS / jigsaw / Java9模块强制执行的ServiceLoader机制。