我想在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