Log4j - ведение журнала в несколько файлов журнала на основе модулей проекта - PullRequest
5 голосов
/ 28 мая 2010

Рассмотрим этот сценарий:

У меня есть проект с двумя модулями и одним общим модулем, как показано ниже (структура пакета):

com.mysite.moduleone
com.mysite.moduletwo
com.mysite.commonmodule

В приведенном выше описании классы commonmodule могут использоваться двумя другими модулями.

Вопрос :

Мне нужно настроить Log4J таким образом, чтобы сообщения журнала от moduleone и moduletwo отправлялись в другой файл журнала. Я всегда могу сделать это, используя category .

Но настоящая проблема заключается в том, что я хочу также регистрировать сообщения с commonmodule. Поэтому, когда классы commonmodule вызываются из moduleone, сообщения журнала commonmodule должны идти в файл журнала moduleone. Если commonmodule является доступом из moduletwo, сообщения журнала commonmodule должны идти в файл журнала moduletwo.

Можно ли настроить Log4J таким образом? Есть комментарии?

PS: Я думаю, что разъяснил свой вопрос. Если возникнет путаница, оставьте комментарий, постарайтесь его очистить. :)

Ответы [ 2 ]

1 голос
/ 28 мая 2010

Можно ли настроить Log4J таким образом?

Короче говоря, это не с log4j, если вы не пишете пользовательский фильтр. И этот фильтр должен был бы захватывать и анализировать стек вызовов для каждого события журнала, которое делает его для каждого приложения журнала ... что будет дорого

0 голосов
/ 07 июня 2010

Я согласен с @Stephen C о невозможности сделать это с Log4j без дорогостоящего пользовательского регистратора.

Еще одна похожая структура ведения журнала, называемая Logback, поддерживает две опции, которых может быть достаточно, чтобы устранить необходимость в специальном приложении. Они называются MDC (сопоставленные диагностические контексты) и маркерами.

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

MDC можно использовать, устанавливая их непосредственно перед входом в код в общем модуле, а затем сбрасывая их при выходе.

Он также имеет фильтр , который может фильтровать по любому из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...