3

我正在尝试使 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 一起工作。安装很好,没有错误。在我的应用程序中,我有一个代码片段可以从外部文件夹读取 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 库。

4

2 回答 2

3

尚未发布的 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 配置。

于 2012-04-10T12:44:33.827 回答
0

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

于 2015-09-23T10:11:08.797 回答