NDC和MDC的原理是用了java的ThreadLocal类。可以针对不同线程存储信息。但是今天在log4j2上使用时发现没有找到NDC和MDC。查找官方文档,原来是换成了ThreadContext。操作也挺简单: X占位符 在官方文档的Pattern Layout章节的Patterns子章节下,可以看到对于%X占位符的描述。 描述中提到,存入Thr
步骤1:引入Log4j2的ThreadContext类 importorg.apache.logging.log4j.ThreadContext; 1. 步骤2:在方法执行前后设置和清除ThreadContext publicvoidsomeMethod(){// 设置ThreadContextThreadContext.put("userId","123456");try{// 执行业务逻辑logger.debug("开始执行someMethod");// ...}finally{// 清除ThreadContex...
Log4j2中的ThreadContext 1.修改log4j2配置文件的PatternLayout.pattern格式,追加[%X{userName}]占位符 <PatternLayout pattern="%d %-5p [%t][%X{userName}] %C{2} (%F:%L) - %m%n"/> 2.追加Java代码,登录时,往ThreadContext存入映射关系,这里为了方便演示,存了固定值 ThreadContext.put("userName","kevi...
我正在使用Springboot + jersey 2.x + log4j2。我像这样注册了泽西的LoggingFeature -我们使用 Log4j2...
Log4j2中的ThreadContext 1.修改log4j2配置文件的PatternLayout.pattern格式,追加[%X{userName}]占位符 <PatternLayoutpattern="%d %-5p [%t][%X{userName}] %C{2} (%F:%L) - %m%n"/> 1. 2.追加Java代码,登录时,往ThreadContext存入映射关系,这里为了方便演示,存了固定值...
--输出日志的格式:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度, %msg:日志消息,%n是换行符--><Propertyname="LOG_PATTERN"value="%d [%t] %-5level %logger{0} - %msg%n"/><!--interval属性用来指定多久滚动一次--><Propertyname="TIME_BASED_INTERVAL"value="1"/></...
ThreadContext.put("loginId","${jndi:ldap://127.0.0.1}");logger.error("xxx"); 在xml中有另一种效果相同的配置方式,但这种写法反而不会触发${}解析 <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout> <pattern>%d %p %c{1.} [%t] %X{loginId} %m%n</pattern> </Pat...
从上面的例子可以看到,通过在日志字符串中加入"${ctx:userId}",Log4j2在输出日志时,会自动在Log4j2的ThreadContext中查找并引用userId变量。格式类似"${type:var}",即可以实现对变量var的引用。type可以是如下值: ctx:允许程序将数据存储在 Log4jThreadContextMap 中,然后在日志输出过程中,查找其中的值。
--日志框架本身日志等级debug 可以打印配置信息--><Configuration status="debug" monitorInterval="5"><properties><property name="LOG_HOME">D:/logs</property></properties><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36...
在配置文件PatternLayout标签的pattern属性中我们可以看到类似%d的写法,d代表一个转换器名称,log4j2会通过PluginManager收集所有类别为Converter的插件,同时分析插件类上的@ConverterKeys注解,获取转换器名称,并建立名称到插件实例的映射关系,当PatternParser识别到转换器名称的时候,会查找映射。相关转换器名称注解和加载的插件...