我正在使用Apache ServiceMix 7.0.1和Felix SCR。启动时,我的许多 OSGI 组件处于禁用/不满意状态。为了获得有关组件生命周期的一些其他日志,我查看了更改 scr 的日志级别并找到了这篇文章 - http://felix.apache.org/documentation/subprojects/apache-felix-service-component-runtime.html 但是我不清楚在ServiceMix中在哪里设置ds.loglevel属性。我尝试在 config.properties 中设置相同的内容,并通过 -D 选项作为启动参数传递,但它没有导致任何其他日志记录。
您能否告诉我如何对故障组件进行故障排除? 谢谢。
据我所知,scr 正在使用 OSGi 日志服务。在许多日志配置中,这些日志不会转发到日志后端。
我最近发现felix现在提供了一个基于logback的新日志记录解决方案,该解决方案也适用于日志服务以及几种类型的OSGi事件。所以我建议你尝试使用felix登录支持包。
这是一个如何设置它的博客: http://liquid-reality.de/2018/08/07/logging-osgi.html
编辑:博客文本在下面,格式稍差,从链接似乎已经死的时候开始,因为它已经从 blog.liquid-reality.de 中移开了。
在相当长的一段时间内,登录OSGi似乎是一件晦涩难懂的事情。上 登录网站仍然有 Ekke 的解释,这是 2008年肯定很好,但在2018年,人们不接受创建自己的 记录桥,使用片段添加配置和调整启动 水平。
幸运的是,这一切都有了很大的改善。Apache Karaf 使用 pax-logging 现在还有Felix Logback支持包。在此 文章我将专注于后者,因为它设置简单并且具有 一些不错的功能。
示例代码
我在我的OSGi DS中添加了felix登录支持你好 世界示例,因为日志记录是任何专业人员的核心方面 发展。
有关如何生成和运行它的说明,请参阅示例中的自述文件。
日志记录前端
登录 + Felix 登录支持广泛的 日志记录前端(slf4j,jul,log4j,logback,commons logging,OSGi 日志服务(。对于您自己的代码,我建议使用 slf4j API。它 依赖项非常稀薄,并提供了很多功能。
在编译时,你只需要 slf4j API。
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency>
你实例化slf4j就像在OSGi之外一样。所以它 也可用于可以在 OSGi.
class MyClass { Logger log = LoggerFactory.getLogger(this.getClass()); }
部署
在运行时,您可以安装以下捆绑包。这些也 包括一些OSGi参考使用的Felix日志服务 实现。
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.log</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.logback</artifactId> <version>1.0.0</version> </dependency>
安装这些最简单的方法是使用 bndtools bndrun 打包,如示例中所示。 以上。
配置
日志配置可以由框架提供 财产。登录将自动监视文件的更改和 应用新设置。
-runproperties: logback.configurationFile=file:${.}/logback.xml
您可以使用普通的登录配置,但 felix logback 也提供了一些 用于配置 OSGi 特定日志(如捆绑包事件(的特殊设置。 请参阅 felix 登录文档中的示例。
可以在此处找到示例配置。