log4j - 在 log4j 版本 1 中动态更改日志级别并桥接到版本 2
问题描述
我目前正在开发一个想要动态更改下一个 java 应用程序(在 localhost 上运行)的日志级别的应用程序。此外部应用程序使用 log4j 版本 1.2.16。我想使用 jmx,找到所有“LoggerConfigAdminMBean”并更改级别。
在规范(访问https://logging.apache.org/log4j/2.0/manual/jmx.html)中提到 log4j 2 是可能的。
因为不想对外部应用做太多改动,所以只用log4j1.2bridge.jar改了log4j1.2.16.jar(访问https://logging.apache.org/log4j/2.x/log4j-1.2 -api/index.html )。但是这种更改的结果是 LoggerConfigAdminMBean 的空列表。
使用 log4j 1.2 桥 jar 是否完全激活了 Jmx MBeans 功能,是否有某种方法可以获取完整的 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
推荐阅读
- c++ - 如何在其他两个函数成功的返回状态下干净地执行一个函数?
- macos - mac 上的 cmake 无法找到 /usr/local/include (libevhtp)
- entity-framework - 实体框架 DDD
- javascript - 将大数组排序为更简单的数组
- f# - Xamarin.Android F# 模板无法在 VS2017 15.7.1 上构建
- angularjs - 我想循环 ng-options 50 次我该怎么做
- html - 将光标从下拉按钮上移开会导致它改变颜色
- java - 将当前日期添加到 YYYY-MM-DD 中的方法
- google-sheets - 如何从公共谷歌电子表格中检索简单的 xml
- python - 如何从包含不需要的字符的文件中加载数据框?