将非常标准的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