0

我有一个a-conf带有src/main/resources/logback/conf/a/CommonAppenders.xml文件的项目:

<included>
    <appender name="FILE" class="FileAppender" />
</included>

我还有另一个a-runable带有logback.xml配置的项目导入CommonAppenders.xml

<configuration>
    <!-- this is classpath import -->
    <include resource="logback/conf/a/CommonAppenders.xml" />
    ...
</configuration>

我可以a-runable在包含所有依赖项(是其中之一)的独立 jar中编译,也可以a-conf作为 OSGi 包编译。当我运行独立应用程序时,一切正常 - 日志文件显示为CommonAppenders.xml. 但是当我运行 OSGi 容器时,不会创建任何日志文件。我认为 logback 不能包含来自类路径的资源,因为 OSGi 容器中的每个包都有自己的类加载器(logback 用于ClassLoader.getResource()包含文件)。

我已经签Export-Package: logback.conf.aa-conf.jar/META-INF/MANIFEST.MF(这是由 maven bundlor 插件完成的) - 没关系。添加Import-Package: logback.conf.aa-runable没有效果。

我不知道我能做什么(没有要更改的代码,只是配置)。欢迎任何帮助。

PS我在这里发现了类似的问题,但logback.xml已经在类路径中并且它自己的附加程序工作正常。FileNotFoundException此外,我在现有日志中没有任何s。

4

1 回答 1

1

默认情况下,如果您不配置侦听器,我相信 Logback 的启动错误会被简单地删除(但我可能记错了)。关键可能是 a-conf 需要是包含 logback.jar 的 bundle 的 Fragment。这就是我为包含一些自制附加程序的捆绑包所做的。

如果您想查看预先配置 Logback 以将其启动错误输出到 OSGi 容器的设置,请查看 Pax-Logger 1.7 - https://github.com/ops4j/org.ops4j.pax.logging/树/master/pax-logging-logback

于 2012-05-25T01:10:28.000 回答