如何在 OSGi (Apache Felix) 中处理不同的日志记录解决方案

2023-12-14

在 OSGi 中,日志记录前端和实际输出之间是分离的。

因此,通过使用日志服务,这并不意味着例如将任何内容写入控制台。这就是一个日志读取服务为...负责。

在我当前的运行时,我正在添加org.apache.felix.log它带来了一个 LogReaderService-Implementation 来处理输出。但我仍然在控制台上看不到任何东西......尽管其他捆绑包中还有很多其他东西。

在下一步中,我创建了自己的 LogListener,它应该由 LogServiceReader 调用。我刚刚使用了来自的代码本文并调试Activator看是否添加了监听器。仍然没有输出。

最后我检查了 Felix 属性并设置felix.log.level=3(信息)但同样,没有输出。 我更想知道的是,尽管将级别设置为“信息”,但我仍然可以看到很多调试信息?

16:47:46.311 [qtp1593165620-27] DEBUG org.eclipse.jetty.http.HttpParser

在我看来,有不同的日志记录策略,它们使用不同的配置属性。例如,在我将 pax-logging-service(使用经典的日志记录方法)添加到运行时后,我可以看到输出,但目前我想坚持使用 felix-logging。

有人可以解释一下如何禁用 Blueprint-Debug-Level(我猜这是导致当前输出的原因),并通过 LogService 启用简单的 felix 日志记录吗?即使规范中没有指定,也必须有一个标准控制台实现。


感谢 Christian Schneider 和 Balazs Zsoldos:这两条评论都非常有帮助。

回答这个问题:我需要提供一个服务跟踪定制器如巴拉兹示例所示here。由于我已经有一个 ConsoleLogListener,因此使用 TrackerCustomizer 注册侦听器就足够了。


由于我当前的任务是迁移一个大型遗留应用程序,我想在其中引入 OSGi,因此使用 OSGi 可能更有意义乘客记录因为 log4j 已经在数百个类中使用,我们可能不会将其更改为日志服务。

Pax-Logging 的输出可以通过属性进行调整org.ops4j.pax.logging.DefaultServiceLog.level set to INFO

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 OSGi (Apache Felix) 中处理不同的日志记录解决方案 的相关文章