Мы создали веб-приложение, которое принимает сообщения SOAP, выполняет некоторую обработку, вызывает другой веб-сервис, массирует ответ и отправляет его обратно исходному абоненту.
Мы бы хотели в одной строке записать разное время выполнения для этих разных шагов. Мы используем log4j со стеком JBossWS. Другими словами, мы бы хотели, чтобы вывод журнала выглядел примерно так:
2009-06-10T16:19:31.487 3336/2449/861
, где 3336 мс - общее время, потраченное на обработку запроса, 2449 мс - время ожидания ответа веб-службы, а 861 мс - время внутренней обработки данных.
Эти разные вычисления происходят в разных местах в нашем коде, и мы не можем просто рассчитать время каждого из них и сделать вызов регистратору в конце одного метода. Один из нас предложил использовать MDC log4j для этого как набор глобальных переменных для бедного человека, чтобы отслеживать различные времена выполнения.
Итак, мои вопросы следующие:
- Это ужасное злоупотребление основным намерением MDC?
- Если да, как бы вы поступили иначе?