如何在 OSGi 环境中为 log4j2 JUL 适配器设置系统属性



我想在OSGi环境中使用log4j2 JUL适配器。所以我直接使用了log4j2 OSGi捆绑包,并在我的一个自定义OSGi捆绑包中设置了以下系统属性,如下所述:

System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");

似乎没有设置此系统属性,因为来自 Java util 框架的日志不会发送到追加器。

我正在使用的OSGi框架是Eclipse Equinox。

在哪里可以设置此系统属性以与 OSGi 一起使用?

编辑:

据我在这里了解,问题出在JVM启动所需属性的乞求处,即 java.util.logging.manager 设置为其默认值,因此在 OSGi 环境中设置此值是无效的,即使我们不能使用 -D 选项设置此属性,因为 log4j2 OSGi 捆绑包不会公开到类路径,因此会发生找不到类异常。

非常感谢对此事的任何帮助。

通常,如果通过 System.setProperty API 设置属性不起作用(可能是因为该属性在你甚至可以覆盖它之前已经被读取),你应该尝试从 JVM 开始设置它,在命令行输入"-D"参数:

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

最新更新