Регистрация согласованного идентификатора потока запросов с log4j при использовании CFX, Spring и DBCP

Вопрос:

Используя довольно стандартный стек CFX и Spring для конечных точек отдыха JAX-RS. Я также использую DBCP для пула соединений с базой данных. Все работает внутри контейнера tomcat в качестве стандартного веб-приложения. Проблема, которую я пытаюсь решить, заключается в регистрации согласованного потока-идентификатора в каждой строке журнала. Таким образом, я могу отслеживать конец запроса.

Но проблема заключается в том, что Spring/DBCP переключает поток на другой, поэтому в строке журнала есть все идиллические нити. В результате я не могу отслеживать один запрос от конца до конца.

Ниже приведен пример

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>

Как вы можете видеть, идентификатор потока изменился с ajp-bio-8034-exec-8 на pool-10-thread-100 и обратно.

Скорее всего, идентификатор потока переключается из-за пула соединений с базой данных с помощью DBCP.

Что я могу сделать, чтобы получить последовательное представление запроса от конца до конца?

Файл свойств log4j использует следующий макет

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

Оцените статью
TechArks.Ru
Добавить комментарий