我最近发现 felix 现在提供了一个基于 logback 的新日志解决方案,它也适用于日志服务以及几种类型的 OSGi 事件。所以我建议你尝试使用 felix logback 支持包。
在相当长的一段时间内,登录 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找到一个示例配置。