Журналирование на основе компонентов с входом в систему (или: перехватывать внешние сообщения журнала) - PullRequest
1 голос
/ 18 октября 2011

Я ищу способ определения транзитивной маршрутизации сообщений журнала. Допустим, у нас есть приложение poly с этими пакетами:

com.mycompany.server-common
com.mycompany.communication
com.mycompany.webservice

server-common используется двумя другими. Все 3 также используют org.hibernate.

Теперь мне нравится иметь 1 файл журнала для компонента webservice со всеми сообщениями из com.mycompany.webservice и с теми сообщениями из com.mycompany.server-common и org.hibernate, которые были инициированы веб-сервисом. А затем еще один базовый файл для коммуникационного пакета.

Мое приложение представляет собой файл war, работающий в tomcat, где все компоненты работают в 1 контексте (он входит в 1 файл war). Я уже определил несколько файлов журнала, но они, естественно, регистрируют только то, что я определил статически, транзитивного включения нет.

Мне было бы очень интересно узнать, как мне достичь желаемого поведения. Я уже думал об использовании MDC для этого, но я не уверен, что это хорошая идея. Другая идея состояла в том, чтобы разделить контексты, но я думаю, что в текущем состоянии проекта это будет сложно, и это не дает той гибкости, на которую я надеюсь.

Любые намеки или обсуждения приветствуются.

1 Ответ

2 голосов
/ 19 октября 2011

Если вы установите ключ MDC, когда веб-служба начнет обслуживать запрос, и очистите ключ MDC в конце запроса, SiftingAppender сделает то, что вы просите. Кричите в списке рассылки logback-пользователя, если у вас возникнут трудности.

...