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

Gra*_*ant 12 java logging osgi log4j log4j2

我想在OSGi环境中使用log4j2 JUL适配器.所以我直接用log4j2 OSGi包,并提到在设置我的自定义OSGi包的一个下面的系统属性在这里:

System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
Run Code Online (Sandbox Code Playgroud)

看起来这个系统属性没有设置,因为来自Java util框架的日志不会成为appender.

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

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

编辑:

据我所知,这个问题是在JVM启动时非常乞求所需的属性即java.util.logging.manager设置为默认值,因此在OSGi环境中设置它是无效的,即使我们不能使用-D选项设置此属性,因为log4j2 OSGi包没有暴露给类路径,因此发生了类未找到异常.

任何帮助都非常感谢这件事.

Lit*_*nti 3

一般来说,如果通过 API 设置属性System.setProperty不起作用(可能是因为在覆盖之前属性已被读取),您应该尝试从 JVM 启动时进行设置,在命令中输入“-D”参数线:

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
Run Code Online (Sandbox Code Playgroud)