Добавление приложений Log4J программным способом

Хорошо, у меня есть эта дурацкая библиотека, которую я использую (documentum DFC), которая проверяет, Logger.getRootLogger().getAllAppenders().hasMoreElements() == false, если да, сбрасывает мой уровень rootLogger на WARN, что после этого уничтожает мой журнал. Поэтому, пытаясь остановить это, я пытаюсь добавить приложение к корневому регистратору, чтобы посмотреть, смогу ли я заставить его прекратить выполнение этого кода. Однако когда я звоню

Logger.getRootLogger().addAppender(new ConsoleAppender()); эта функция по-прежнему ошибается. Кто-нибудь сталкивался с этим?

Я использую любую версию log4j, поставляемую с jboss 6, в имени файла jar это не указано.


person Rocky Pulley    schedule 20.05.2011    source источник
comment
Может быть, log4j загружается из двух разных загрузчиков классов, поэтому у вас есть два разных корневых регистратора? Или, может быть, какой-то другой код удаляет приложение после его добавления?   -  person Robin Green    schedule 20.05.2011
comment
@ user428916: Если вы хотите проверить ложное значение, не используйте оператор ==. Просто используйте это так if(!Logger.getRootLogger().getAllAppenders().hasMoreElements()).   -  person Harry Joy    schedule 20.05.2011


Ответы (1)


У меня есть похожие проблемы. Я могу добавить приложение, записывающее в строку памяти, но это никогда не работает. Мне кажется, что JBoss действительно использует / изменяет log4J таким образом, что эта модификация кода больше невозможна, см. Также здесь: https://issues.jboss.org/browse/JBAS-9318

person Martin    schedule 14.11.2011