我有一个包含src/main/resources/logback/conf/a/CommonAppenders.xml文件的项目a-conf:
<included>
<appender name="FILE" class="FileAppender" />
</included>另外,我还有另一个带有logback.xml配置的项目a-runable,可以导入CommonAppenders.xml
<configuration>
<!-- this is classpath import -->
<include resource="logback/conf/a/CommonAppenders.xml" />
...
</configuration>我可以在包含所有依赖项(a-conf是其中之一)的独立jar中编译a-runable,也可以将其作为OSGi包。当我运行独立的应用程序时,一切正常-日志文件显示为CommonAppenders.xml中指定的文件。但是当我运行OSGi容器时,没有创建日志文件。我认为logback不能包含来自类路径的资源,因为OSGi容器中的每个包都有自己的类加载器(logback使用ClassLoader.getResource()来包含文件)。
我已经在a-conf.jar/META-INF/MANIFEST.MF中检查了Export-Package: logback.conf.a (这是由maven bundlor插件完成的)-它是正常的。已将Import-Package: logback.conf.a添加到a-runable,但不起作用。
我不知道我能做什么(不需要修改代码,只需要配置)。任何帮助都是受欢迎的。
附注:我也发现了类似的问题here,但是logback.xml已经在类路径中了,而且它自己的附加器工作得很好。此外,我在现有日志中没有任何FileNotFoundException。
发布于 2012-05-25 09:10:28
默认情况下,我相信如果你没有配置一个监听器,Logback的启动错误就会被删除(但我可能记错了)。关键字可能是a-conf需要是包含logback.jar的包的片段。这就是我为我的捆绑包做的事情,它有一些自制的附加物。
如果您希望看到预先配置Logback以将其启动错误输出到OSGi容器的设置,请查看Pax-Logger1.7- https://github.com/ops4j/org.ops4j.pax.logging/tree/master/pax-logging-logback
https://stackoverflow.com/questions/10744235
复制相似问题