Why log4j stop running MDC logic if Java version is 11, 11.1x, etc(如果Java版本是11、11.1x等,为什么log4j停止运行MDC逻辑)
问题描述
我使用MDC帮助log4j记录更多信息。在我将java版本更新到11之前,一切都运行得很好。 这是我的log4j配置(伪代码)
log4j.appender.R.layout.ConversionPattern = [%-4p] %d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%X{request-id}] %l %m%n
这就是我为MDC所做的
MDC.put("request-id","example-request-id")
不出所料,应该记录了请求ID。但是,如果Java版本为11,则不起作用。
以下是我对log4j代码的发现。
";org.apache.log4j.helpers.Loader";中有代码要设置java1,
String prop = OptionConverter.getSystemProperty("java.version", null);
if(prop != null) {
int i = prop.indexOf('.');
if(i != -1) {
if(prop.charAt(i+1) != '1')
java1 = false;
}
}
然后,";org.apache.log4j.MDC#mdc";中的一些代码停止逻辑。
void put0(String key, Object o) {
if(java1 || tlm == null) {
return;
}
...
}
总而言之,如果java版本是11、12、13、.、11.1x、12.1x、.等,则MDC将无法工作。这看起来不像是错误吗?
推荐答案
这是一个错误。但是,Log4j自2015年8月5日(http://logging.apache.org/log4j/1.2/)和
起标记为停产建议Log4j 1的用户升级到Apache Log4j 2
具体地说,MDC和Java 9的问题是众所周知的:Log4j 1.2 is broken on Java 9,但是不太可能有人能够解决这个问题。
这篇关于如果Java版本是11、11.1x等,为什么log4j停止运行MDC逻辑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如果Java版本是11、11.1x等,为什么log4j停止运行MDC逻辑
基础教程推荐
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- Struts2 URL 无法访问 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
