Стратегии для входа в журналы приложений из кода библиотеки? - PullRequest
6 голосов
/ 16 января 2009

Где я работаю, мы используем Log4j для регистрации веб-приложений. Log4j.jar находится на уровне приложения, а не на уровне контейнера. Мы используем ежедневно обновляемый файл appender. Наши файлы log4j.properties определяют приложения, основанные на имени пакета приложения, поэтому только классы в пакете нашего приложения и ниже регистрируются в файле журнала нашего приложения.

В моем приложении я расширяю нашу инфраструктуру некоторыми поддерживающими классами. Эти классы не входят в пакет приложения, поскольку они не являются эксклюзивными для моего приложения и в конечном итоге будут превращены в библиотеку jar для использования с другими приложениями. Из-за этого мои операторы журналирования не воспринимаются приложением моего приложения и, следовательно, не регистрируются в лог-файлах моего приложения.

Я хочу разрешить классам в моем банке войти в файл журнала приложения, используя классы. Однако, если я создаю appender в файле свойств log4j моего приложения на основе моих имен классов, я подозреваю, что когда несколько jar-файлов используют несколько приложений из-за одинаковых имен классов в файлах log4j.properties, только один файл журнала приложения получит мой операторы журналирования jar и что он будет получать ВСЕ операторы журналирования от КАЖДОГО приложения, использующего этот jar Я думаю, что это так, поскольку мы используем статический вызов Logger.getLogger () для извлечения регистратора.

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

Я также хотел бы знать, существуют ли "границы", на которых это поведение изменяется. Например, существует ли эта проблема независимо от того, является ли log4j.jar флягой уровня контейнера или флягой уровня приложения, или каждый контейнер работает в отдельной JVM?

Наконец, если это так, я хотел бы знать, какие стратегии мне следует использовать для преодоления этой проблемы.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 16 января 2009

Если log4j.jar находится только в веб-приложении, то журналы будут оставаться отдельными, поэтому у каждого веб-приложения должны быть свои собственные log4j.jar и log4j.properties, чтобы все журналы оставались отдельными.

0 голосов
/ 16 января 2009

Проблема в том, что предпочтительным шаблоном для log4j является использование статических методов * Configurator, которые не очень хорошо работают с контейнерами приложений.

Эта статья решила эту проблему для меня, когда я с ней столкнулся ...

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