SLF4J log4j NoSuchMethodError для категории - PullRequest
2 голосов
/ 13 августа 2011

Я использую SLF4J + LogBack для обработки своей регистрации, и у меня есть соответствующие jar для маршрутизации других вызовов инфраструктуры ведения журнала. Однако я столкнулся с проблемой, отмеченной здесь: http://www.slf4j.org/legacy.html#log4j-over-slf4j

Где я получаю NoSuchMethodError по вызову Appender (в частности, Category.getRoot()).

В нем упоминается, что использование файла log4j.properties или log4j.xml должно исправить эти проблемы, но я не совсем уверен, как будет выглядеть этот файл конфигурации (какие приложения и категории использовать) или где его разместить ( в том же месте, что и logback.xml?)

Я также видел это: Проблемы с заменой Log4j на LogBack, недостатки log4j-over-slf4j.jar

Кажется, что это, по сути, тот же вопрос, но так и не получил ответа.

1 Ответ

2 голосов
/ 19 сентября 2011

Классы log4j Appender и Category содержат несколько методов (например, Category.addAppender()), которые могут изменить конфигурацию ведения журнала.Поскольку slf4j - простой фасад для ведения журнала, конфигурация полностью зависит от базовой структуры ведения журнала (logback, log4j, java-util-logging и т. Д.), Поэтому slf4j не поддерживает эти методы.

Проверьте исходный код класса Category модуля log4j-over-slf4j , метод getRoot() отсутствует.Я не думаю, что какое-либо свойство или XML-файл изменит это.С http://www.slf4j.org/legacy.html#log4j-over-slf4j:

Однако, если log4j настроен через файл конфигурации, будь то log4j.properties или log4j.xml, модуль log4j-over-slf4j должен работать нормально.

Это просто означает, что если ведение журнала вашего приложения настроено только с log4j.xml или log4j.properties, модуль log4j-over-slf4j будет работать нормально, поскольку приложение не использует методы настройки Appenderи категории (и, возможно, другие) классы.Он использует log4j только для ведения журнала, а не для его настройки, и необходимые методы ведения журнала существуют в модуле log4j-over-slf4j.Итак, если ваше приложение использует методы конфигурации, вам нужно изменить код.

...