动态更改 log4j 版本 1 中的日志级别并桥接到版本 2

Dynamically changing log level in log4j version 1 and bridge to version 2

我目前正在开发一个应用程序,它希望动态更改下一个 java 应用程序(在本地主机上 运行 )的日志级别。此外部应用程序使用 log4j 版本 1.2.16。我想使用 jmx,找到所有 "LoggerConfigAdminMBean" 并更改级别。

在规范中(访问 https://logging.apache.org/log4j/2.0/manual/jmx.html)提到 log4j 2 是可能的。

因为我不想在外部应用做太多改动,所以我只把log4j1.2.16.jar改成log4j1.2bridge.jar(访问https://logging.apache.org/log4j/2.x/log4j-1.2-api/index.html)。但此更改的结果是 LoggerConfigAdminMBean 的空列表。

是否使用 log4j 1.2 bridge jar 完全激活了 Jmx MBean 功能,是否有某种方法可以获取完整的 LoggerConfigAdminMBean 列表,或者只能通过从 log4j1 迁移到 log4j2 版本才能实现?

非常感谢您的回答。

您应该使用这两个依赖项:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.11.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.11.1</version>
</dependency>

并改编 log4j.properties,它必须放在项目的类路径中。参见:https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties