gpt4 book ai didi

java - Logback 在 OSGi 容器中包含片段

转载 作者:行者123 更新时间:2023-12-01 15:22:09 27 4
gpt4 key购买 nike

我有一个项目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>

我可以在独立 jar 中编译 a-runable ,并包含所有依赖项(a-conf 是其中之一)或作为 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

最佳答案

默认情况下,我相信如果您不配置监听器,Logback 的启动错误就会被丢弃(但我可能记错了)。关键可能是 a-conf 需要是包含 logback.jar 的包的片段。这就是我为包含一些自制附加程序的包所做的。

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

关于java - Logback 在 OSGi 容器中包含片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com