Felix Scr 更改日志级别
Posted
技术标签:
【中文标题】Felix Scr 更改日志级别【英文标题】:Felix Scr change log levels 【发布时间】:2019-01-27 13:45:39 【问题描述】:我正在使用带有 Felix SCR 的 Apache ServiceMix 7.0.1。启动时,我的一些 OSGI 组件处于禁用/不满意状态。为了获得有关组件生命周期的一些额外日志,我查看了更改 scr 的日志级别并找到了这篇文章 - http://felix.apache.org/documentation/subprojects/apache-felix-service-component-runtime.html 但我不清楚在 ServiceMix 中设置 ds.loglevel 属性的位置。我尝试在 config.properties 中设置相同的值,并通过 -D 选项作为启动参数传递,但它没有导致任何额外的日志记录。
您能告诉我如何排除故障组件的问题吗? 谢谢。
【问题讨论】:
【参考方案1】:据我所知 scr 正在使用 OSGi 日志服务。在许多日志配置中,这些日志不会转发到日志后端。
我最近发现 felix 现在提供了一个基于 logback 的新日志解决方案,它也适用于日志服务以及几种类型的 OSGi 事件。所以我建议你尝试使用 felix logback 支持包。
这是一个如何设置的博客: http://liquid-reality.de/2018/08/07/logging-osgi.html
编辑:博客文本如下,格式稍差,链接似乎已失效,因为它已从 blog.liquid-reality.de 移出。
在相当长的一段时间内,登录 OSGi 似乎是一件神秘的事情。在 logback 网站仍然有 this explanation by Ekke 这是 2008 年肯定不错,但在 2018 年人们不接受创建自己的 记录桥梁,使用片段添加配置并调整启动 级别。
幸运的是,这一切都得到了很大改善。 Apache Karaf 使用 pax-logging 现在还有felix logback support bundle。在这个 文章我将专注于后者,因为它易于设置并且具有 一些不错的功能。
示例代码
我在OSGi DS hello world example 中添加了 felix logback 支持,因为日志记录是任何专业人士的核心方面 发展。
有关如何构建和运行它的说明,请参阅示例中的自述文件。
日志前端
Logback + Felix logback 支持广泛的 日志记录前端(slf4j、jul、log4j、logback、公共日志记录、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 包装,如示例中 以上。
配置
logback 配置可以由框架提供 财产。 Logback 将自动监视文件的更改和 应用新设置。
-runproperties: logback.configurationFile=file:$./logback.xml
你可以使用普通的 logback 配置,但是 felix logback 也提供了一些 用于配置 OSGi 特定日志(如捆绑事件)的特殊设置。 请参阅examples in the felix logback docs。
可以在here找到一个示例配置。
【讨论】:
以上是关于Felix Scr 更改日志级别的主要内容,如果未能解决你的问题,请参考以下文章