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

标签 java logging log4j osgi log4j2

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

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

关于java - 如何在 OSGi 环境中为 log4j2 JUL 适配器设置系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30815326/

相关文章:

java - Lucene 锁定异常

java - 将 slf4j 与 log4j2 一起使用是否值得

java - 如何在 spring 中为 log4j2 创建自定义 appender

java - 是否可以在没有 @DirtiesContext 的情况下测试 Spring REST Controller ?

Java 8 foreach 将子对象添加到新列表

java - 如何在 Java 中比较 arraylist<string> 与 arraylist<file>?

logging - Sidekiq 记录 Redis 查询

python - 如何在 YAML 中指定始终使用 dictConfig 在项目文件夹中创建日志文件?

c# - 带有 AdoNetAppender 的 Log4Net - 没有任何反应

java - 动态命名 log4j 日志文件 - 有效,但 setFile() 并非没有异常(exception)