我正在尝试设置 pax-logging 以将某些日志转储到特定文件。我已经看到这可以通过 ConfigurationAdmin 来实现。所以,我做了以下事情:
- 在蓝图中注入对 ConfigurationAdmin 服务的引用
- 向它询问 PID = org.ops4j.pax.logging 的配置
- 获取当前配置并添加属性以配置我的包的附加程序和记录器
- 调用 Configuration.update(properties)
我可以看到文件 etc/org.ops4j.pax.logging.cfg 是如何更新的,我的新属性是如何添加到其中的。但是我没有看到为我的 appender 创建新文件,并且我的记录器中的日志也不再添加到 karaf.log 中。在创建新的附加程序之后,我可以通过触摸 etc/org.ops4j.pax.logging.cfg 以某种方式使其再次工作,并且我开始看到写入其中的日志。这似乎是由 felix-fileinstall 引起的,它检测到文件已更改并可能重新部署某些内容(不确定是什么)
我的问题是:
- 这是以编程方式和动态方式添加附加程序的正确方法吗?我的应用程序旨在作为 kar 文件分发,其中包含多个功能,我希望在它启动时发生这种情况。
- 除了 Configuration.update(properties) 之外,我是否需要执行其他操作才能让 pax-logging 考虑到这些更改?似乎有些事情发生了变化,因为在初始化我的包后我不再看到我的日志,但似乎没有创建附加程序。
我正在使用 karaf 4.1.5 和 pax-logging-log4j2 1.10.1
问候
曼努埃尔