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