【问题标题】:How to make logback (a logging library) work with ServiceMix (Karaf + ops4j logging)如何使 logback(一个日志库)与 ServiceMix 一起工作(Karaf + ops4j 日志)
【发布时间】:2012-04-05 08:57:00
【问题描述】:

我正在尝试使 logback 与 ServiceMix 4.3.0 (karaf 2.1.3) 一起使用,但没有成功。有没有人已经成功地让它工作了? (使用任何版本的 serviceMix + slf4j + logback)

这是我的情况。我能够使(Logback + slf4j + 我的应用程序)在 tomcat 中一起工作。现在我想让它们在 ServiceMix 中一起工作。 ServiceMix 使用 OPS4J (org.ops4j.pax.logging) 来提供 slf4j (1.5.11)。所以,我必须使用 ServiceMix 提供的 slf4j(我不必安装新的 slf4j 包),接下来我安装了 Logback Core Module (0.9.20)、Logback Classic Module (0.9.20)、jcl-over-slf4j (1.5 .11) 为了使 slf4j 和 logback 一起工作。安装很好,没有错误。 在我的应用程序中,我有一个代码 sn-p 从外部文件夹读取 logback.xml。

fis = new FileInputStream(System.getProperty("logconf") + "/logback.xml");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
lc.reset();
configurator.doConfigure(fis);

但每当运行此代码时,我总是会收到此错误:

java.lang.ClassCastException:org.ops4j.pax.logging.slf4j.Slf4jLoggerFactory 无法转换为 ch.qos.logback.classic.LoggerContext

因此我认为 ServiceMix 提供的 slf4j 不适用于 logback 库。

【问题讨论】:

    标签: logging logback slf4j apache-karaf apache-servicemix


    【解决方案1】:

    尚未发布的 Pax-Logging 1.7 支持 Logback。见https://github.com/ops4j/org.ops4j.pax.logging

    您尝试执行的操作将永远无法使用 Pax-Logging,因为 Pax 有意包装了记录器工厂以允许运行时注入日志记录提供程序。相反,如果您使用 Pax-Logging 1.7(有一天),那么您将通过指向您的 logback.xml 的 org.ops4j.pax.logging.cfg 文件进行 logback 配置。

    【讨论】:

    • 更新:Pax-Logging 1.7.0 已于上周发布
    • 谢谢,但我看到最新版本是 1.6.4。链接:team.ops4j.org/wiki/display/paxlogging/Download
    • 看起来 wiki 刚刚过时。试试这个:search.maven.org/#search=pax-logging
    • 太棒了。但是您知道文档如何使用它吗?如何让它理解 logback.xml
    • 创建一个文件etc/org.ops4j.pax.logging.cfg,内容如下:org.ops4j.pax.logging.logback.config.file=${karaf.base}/etc/logback.xml
    【解决方案2】:

    我遇到了类似的错误,后来注意到我需要在我的 osgi 包中重新组织我的导入。 slf4j 是在 logback 后导入的,这会导致此错误。当我删除该异常时,该异常消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      相关资源
      最近更新 更多