【问题标题】:Using Log4j2.10 and slf4j-api 1.8 in OSGI/Eclipse在 OSGI/Eclipse 中使用 Log4j2.10 和 slf4j-api 1.8
【发布时间】:2018-02-16 15:09:19
【问题描述】:

我正在尝试在我的 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.

它与使用 slf4j 1.8 不再支持的 StaticLoggerBinder 机制的 Log4j 2.9.1 和 slf4j-api 1.7.24 一起使用

我的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文件或未加载。

为了让它工作,我有什么遗漏吗?

提前致谢,

罗伯

【问题讨论】:

  • 啊ServiceLoader...你可能需要看看aries.apache.org/modules/spi-fly.html
  • 感谢回复,我看到了,但是这意味着修改 slf4j-api 和 log4j.slf4j-impl 清单文件,不是吗?我希望它可以与标准依赖项一起使用。罗伯

标签: osgi slf4j log4j2 serviceloader


【解决方案1】:

您可以使用org.apache.logging.log4j: log4j-slf4j18-implSLF4J 1.8.x 绑定,如official documentation 中所述。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2013-01-11
      • 1970-01-01
      • 2011-05-15
      • 2012-11-06
      • 2016-01-01
      • 2015-08-25
      相关资源
      最近更新 更多