Java log4j2线程上下文的配置
在我的spring boot应用程序中,我使用的是log4j2。这是一个典型的web应用程序。我有很多连接,我想为每个连接分离日志 我想使用: 我在两个终端上进行测试:Java log4j2线程上下文的配置,java,spring,logging,log4j,log4j2,Java,Spring,Logging,Log4j,Log4j2,在我的spring boot应用程序中,我使用的是log4j2。这是一个典型的web应用程序。我有很多连接,我想为每个连接分离日志 我想使用: 我在两个终端上进行测试:curl localhost:8000/test。但我有一个结果: 14:09:27.895 [qtp401792389-21] INFO Controllers.ContentController - start 14:09:28.062 [qtp401792389-19] INFO Controllers.ContentC
curl localhost:8000/test
。但我有一个结果:
14:09:27.895 [qtp401792389-21] INFO Controllers.ContentController - start
14:09:28.062 [qtp401792389-19] INFO Controllers.ContentController - start
14:09:28.896 [qtp401792389-21] INFO Controllers.ContentController - end.
14:09:29.062 [qtp401792389-19] INFO Controllers.ContentController - end.
这是一个混合会话,我想要:
14:09:27.895 [qtp401792389-21] INFO Controllers.ContentController - start
14:09:28.896 [qtp401792389-21] INFO Controllers.ContentController - end.
14:09:28.062 [qtp401792389-19] INFO Controllers.ContentController - start
14:09:29.062 [qtp401792389-19] INFO Controllers.ContentController - end.
那么,有什么特殊的配置吗?日志4j2说明了如何使用根据ThreadContext键将日志路由到不同的文件
这使用的是ThreadContext映射,而不是堆栈(因此您需要使用
put
方法,而不是push
) 有点晚了,但是如果将MDC实现与ThreadContext.put(key,value)
一起使用,效果会更好。必须使用正确的配置,如{%20X}。
14:09:27.895 [qtp401792389-21] INFO Controllers.ContentController - start
14:09:28.896 [qtp401792389-21] INFO Controllers.ContentController - end.
14:09:28.062 [qtp401792389-19] INFO Controllers.ContentController - start
14:09:29.062 [qtp401792389-19] INFO Controllers.ContentController - end.