【发布时间】:2016-04-06 23:49:15
【问题描述】:
我正在使用 Apache Felix、Declarative Services 和 Maven 编写基于 OSGI 的桌面应用程序。它将使用JavaFX,所以我也使用Drombler FX。
在我开发的包中,我想使用适当的日志记录机制,我目前正在尝试使Apache Felix Log 工作。获得LogService 没有问题,但这不足以使输出出现在控制台上。
The word on the net 是 Everit 的 osgi-loglistener-slf4j 将完成这项工作,并且 - 果然 - 在osgi-loglistener-slf4j 被激活后,控制台上会出现日志输出。
然而,osgi-loglistener-slf4j 直到在我自己的所有捆绑包之后才被激活,所以我感兴趣的日志信息都不会输出。我尝试在我的第一个包中创建一个@Reference 到一个LogLevel 以尝试强制激活osgi-loglistener-slf4j,但没有成功。
如何先激活osgi-loglistener-slf4j?我已经阅读了有关启动级别的信息,但是我无法找到有关如何在我的上下文中应用它们的任何信息(即桌面而不是服务器,所以没有 PAX 或 Karaf;Maven;我使用 NetBeans,所以没有 Eclipse)。
【问题讨论】:
-
我正在通过实现我自己的日志服务(实现
org.osgi.service.log.LogService)作为 Slf4j 的包装器来解决这个问题。也许这是最好的方法。 -
您可以通过使用felix start levels 并将osgi-loglistener-slf4j 级别1 和其他捆绑包级别2 来调整启动顺序
-
我刚刚发现了this thread,它解决了同样的问题,尽管还没有定论。
-
这不是一个真正的答案,但这是我决定继续进行的方式。我没有为任何基于
org.osgi.service.log.LogService的解决方案而烦恼:使用简单的 Slf4j 解决方案要容易得多。这样我就可以确保激活没有问题。 -
哦,如果必须记录特定包的信息,可以将其放入 Slf4j 标记中...
标签: maven logging apache-felix declarative-services drombler-fx