使用CFX,Spring和DBCP时,使用log4j记录一致的请求线程ID

时间:2014-07-23 04:27:00

标签: spring log4j tomcat7 spring-data apache-commons-dbcp

将非常标准的CFX和Spring堆栈用于JAX-RS休息端点。我也在使用DBCP进行数据库连接池。一切都在tomcat容器内运行,作为标准的web-app。我试图解决的问题是在每个日志行上记录一致的线程ID。这样我就可以端到端地跟踪请求。

但问题似乎是Spring / DBCP将线程切换到另一个,所以日志行的线程ID都混乱了。因此,我无法端到端地跟踪单个请求。

以下是一个例子

2014-07-22 18:55:47,224 INFO ajp-bio-8034-exec-8 <log_line_omitted>
2014-07-22 18:55:47,226 INFO pool-10-thread-77   <log_line_omitted>
2014-07-22 18:55:47,299 INFO ajp-bio-8034-exec-8    <log_line_omitted>

如您所见,线程ID已从 ajp-bio-8034-exec-8 更改为 pool-10-thread-100 并再次返回。< / p>

由于DBCP的数据库连接池,很可能是thread-id正在切换。

我该怎么做才能获得端到端请求的一致视图?

log4j属性文件使用以下布局

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p %t %c - %m%n

0 个答案:

没有答案