проблема предупреждения log4j - apache commons - PullRequest
6 голосов
/ 03 апреля 2012

Я использую библиотеку Apache Commons и log4j.У меня есть файл конфигурации xml и файлы log4j.properties.Я хочу указать путь к свойствам log4j внутри моего файла конфигурации xml.Чтобы загрузить мои настройки, я делаю:

//Loading my xml file
this.config = new XMLConfiguration(this.xmlFileName);  

В этот момент выдаются следующие предупреждения:

log4j:WARN No appenders could be found for logger (org.apache.commons.configuration.ConfigurationUtils).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Однако я еще не вызывал объект log4j.После прочтения XML-файла я могу успешно работать с моим экземпляром log4j.Есть ли способ удалить эти предупреждения?

Ответы [ 4 ]

4 голосов
/ 03 апреля 2012

Проверьте, находится ли файл log4j.properties в пути к классам

Эта ссылка может быть полезна: http://www.coderanch.com/t/63230/open-source/log-log-WARN-No-appenders

1 голос
/ 03 апреля 2012

Log4J выводит эту ошибку при создании регистратора, но не определен (-ны) аппендиатор.На практике эта ошибка возникает, когда регистратор создается до инициализации log4j.

Вы говорите, что не вызывали ни один объект log4j.Но в сообщении об ошибке вы видите, что org.apache.commons.configuration.ConfigurationUtils создает объект регистратора (см. Строку 66 ).

Вы можете отключить его перед инициализацией, см. Как отключить log4jпредупреждения?

Logger.getRootLogger().setLevel(Level.OFF);

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

0 голосов
/ 04 апреля 2012

Я решаю свою проблему с помощью этого обходного пути:

//Disable log level
Logger.getRootLogger().setLevel(Level.OFF);

Теперь я могу читать мой файл конфигурации xml без ПРЕДУПРЕЖДЕНИЙ.
После установки уровня журнала:

Logger.getRootLogger().setLevel(Level.INFO);
0 голосов
/ 03 апреля 2012

Вы должны по крайней мере установить appender и уровень logger для корневого logger в загруженном файле конфигурации log4j. В противном случае вы увидите это предупреждение.

Пример установки уровня appender и logger для корневого logger:

#Set root logger 's level and its appender to an appender called CONSOLE which is defined below.
log4j.rootLogger=DEBUG, CONSOLE

#Set the behavior of the CONSOLE appender 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
...