【问题标题】:OSGi + Logback + slf4j - Eclipse Run ConfigurationOSGi + Logback + slf4j - Eclipse 运行配置
【发布时间】:2012-11-27 16:49:26
【问题描述】:

这是我的配置:

我们正在开发一个 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

现在,当我转到运行 -> 运行配置 -> OSGi 框架并选择我的 Bundle 并单击“添加必需的插件”时,将选择 100 多个 Bundle,我会遇到很多错误和异常。

所以我从现有的 jar 中想出了一个新插件,其中包括以下三个 jar:

  • logback-classic-1.0.7
  • logback-core-1.0.7
  • com.springsource.slf4j.api-1.6.1(我不认为这是个好主意,但是嘿...)

如果我手动创建一个新的运行配置(不单击“添加所需的捆绑包”,它会按预期工作,但就我点击“添加所需的捆绑包”而言,我回到了 100 多个带有很多错误的捆绑包(有些例如码头的东西......)

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

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

【问题讨论】:

    标签: eclipse osgi slf4j equinox tycho


    【解决方案1】:

    AFAIK 当前官方 Logback/SLF4J jar 中的捆绑清单标头中存在一些问题。但是,您只需要以下三个 jars/bundles。基本功能不需要其他任何东西。

    • SLF4J API
    • Lo​​gback 核心
    • Lo​​gback 经典

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

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

    您可能还想要:

    请注意,“添加必需的插件”不够聪明。它可能选择了太多或太少的插件。有时服务 API 在一个包中交付,但实际的服务实现在第二个包中交付。它可能不会选择该捆绑包。

    【讨论】:

      【解决方案2】:

      有一个复选框,上面写着“解决可选导入”之类的内容。默认情况下它处于开启状态,但这几乎总是会导致您描述的行为,即它想要添加所有内容。

      关闭它应该会有所帮助。另外,PDE 往往会添加很多不需要的片段。

      总而言之,我很少相信 Eclipse 会为运行时添加“正确”的包。我只是使用“验证”并手动添加所需的内容,然后再次检查。这可能需要几分钟,但是当您将其留给 PDE 时找出问题所在可能需要几个小时。

      【讨论】:

        【解决方案3】:

        不确定 logback,但您可能还想尝试pax logging。只需安装 pax logging api 和 pax logging 服务,它应该可以工作。还有一个documentation how to set it up in eclipse

        【讨论】:

          【解决方案4】:

          如果您希望它与 Eclipse Equinox 一起使用,您可以尝试 Eclipse-BuddyPolicy。这使一个插件能够从另一个插件加载所有类,而无需显式导入它。 这可能会解决您的问题。

          从带有罐子的捆绑包中添加到您的清单中:

          Eclipse-BuddyPolicy:依赖

          并使用日志记录到包

          Eclipse-RegisterBuddy: com.other.plugin

          http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fbundle_manifest.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-03-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-14
            相关资源
            最近更新 更多