OSGi + Logback + slf4j - Eclipse运行配置

hue*_*eck 7 eclipse osgi slf4j equinox tycho

这是我的配置:

我们正在开发一个OSGi应用程序,并希望包含日志记录.我决定使用slf4j + logback.

我们使用Eclipse作为IDE和Tycho从Eclipse IDE(如Manifest Editor等)中受益.

所以我尝试了以下方法:

使用以下Manifest.mf创建了一个新插件:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Createcommand
Bundle-SymbolicName: de.hswt.oms.ws.wsr.createcommand
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: de.hswt.oms.ws.command.wsr,
 de.hswt.oms.ws.ds.core.data.impl,
org.slf4j
Service-Component: OSGI-INF/component.xml
Run Code Online (Sandbox Code Playgroud)

现在,当我转到Run - > Run Configurations - > OSGi Framework并选择我的Bundle并单击"Add Required plugins"时,将选择100多个Bundles,我会收到很多错误和异常.

所以我想出了一个来自现有Jars的新插件,其中包括以下三个罐子:

  • 的logback经典-1.0.7
  • 的logback核-1.0.7
  • com.springsource.slf4j.api-1.6.1(我不相信这是个好主意,但是嘿......)

如果我手动创建一个新的运行配置(不点击"添加必需的捆绑",它按预期工作,但只要我点击"添加必需的捆绑"我回到100多个捆绑包有很多错误(一些Jetty的东西为例...)

所以我的问题是:如何在我的OSGi应用程序中启用logback和slf4j并在eclipse中使用它并正确配置它?

如果您需要更多信息,请随时询问.

Gun*_*nar 8

AFAIK在当前官方Logback/SLF4J jar中的bundle清单头中存在一些问题.但是,您只需要以下三个罐子/捆绑包.基本功能不需要其他功能.

  • SLF4J API
  • Logback Core
  • Logback Classic

在Eclipse中,我们将捆绑包放在Orbit中,以便在项目中重复使用.我们对我们认为有益的清单标题应用了一些修改.例如,我们将实际的SLF4J绑定作为片段提供,以避免原始SLF4J API jar的循环依赖.

以下是捆绑包的下载链接:

您可能还需要:

请注意,"添加必需的插件"不够智能.它可能会选择太多或太少的插件.有时,服务API在一个捆绑包中提供,但实际的服务实现在第二个捆绑包中提供.它可能不会选择该捆绑.