Динамическая настройка уровня Log4j для нескольких JVM - PullRequest
3 голосов
/ 01 октября 2011

Я работаю в приложении, имеющем ряд простых ванильных компонентов Java, каждый из которых работает в отдельной JVM.Все эти компоненты используют Log4j, и нет никакой возможности перейти на другую библиотеку журналов.

Как видно из названия, я ищу "простой" способ динамически применять уровень ведения журнала Log4j для всех компонентов./ JVMs .Под «легким» я подразумеваю без переписывания исходного кода (в противном случае можно использовать, например, интерфейс для получения / установки уровня ведения журнала, и чтобы все классы реализовывали этот интерфейс).

Есть статьив Интернете об использовании JMX (например, через класс LoggerDynamicBean (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/jmx/LoggerDynamicMBean.html) из дистрибутива Log4j.

). В такой интересной статье описывается, как реализовать это с помощью сервера приложений (Tomcat): http://www.devx.com/Java/Article/32359/1954. Сервер приложений представляется необходимым в качестве реализации класса MBeanServer, для которого все средства регистрации будут зарегистрированы в Log4j как MBeans.

Существует ли какая-либо реализация, которая выполняет этот уровень динамического ведения журналаустановка через несколько JVM, либо через JMX, либо любым другим способом?

1 Ответ

1 голос
/ 01 октября 2011

Будьте проще.Укажите все JVM на один и тот же файл конфигурации log4j, используйте его для периодической перезагрузки

PropertyConfigurator.configureAndWatch( yourConfigFile, yourReloadInterval);

...