Как изменить уровень журнала пакетов с помощью Log4j?
Я столкнулся со следующей ошибкой:
http://issues.apache.org/jira/browse/AXIS2-4363
В нем указано следующее:
Эта ошибка возникает только при уровне журнала для org.apache.axiom - DEBUG, поэтому обходной путь - установить уровень журналa > DEBUG.
Мой вопрос: КАК я это делаю? Я просматривал свои каталоги для файла свойств или что-то еще, и я искал, есть ли что-то, что я могу установить в коде, но я действительно не знаю, что делаю. Сейчас я запускаю консольное приложение на своем рабочем столе, пытаясь заставить его работать.
Обновление 1: я заметил, что мой каталог Axis2 имеет свой собственный файл log4j.properties в своем корне. Это безопасно игнорируется или является частью решения (или части проблемы)?
Обновление 2: Файл log4j.properties корневого уровня установлен неправильно. Сейчас это выглядит так:
log4j.rootLogger=DEBUG, R
log4j.logger.org.apache.axiom=WARN
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
но это, по-видимому, неверно, поскольку этот код возвращает "Log level is null":
System.out.println("Log level is " + logger.getLevel());
Теперь я устанавливаю уровень журнала в коде с помощью
Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);
Ответы
Ответ 1
Какой сервер приложений вы используете? Каждый из них ставит свою конфигурацию регистрации в другое место, хотя в настоящее время большинство из них используют Commons-Logging в качестве обертки для Log4J или java.util.logging.
Используя Tomcat в качестве примера, этот документ объясняет ваши варианты настройки ведения журнала с помощью любой опции. В любом случае вам нужно найти или создать файл конфигурации, который определяет уровень журнала для каждого пакета, и каждое место, где система регистрации будет выводить информацию журнала (обычно консоль, файл или db).
В случае log4j это будет файл log4j.properties, и если вы будете следовать указаниям в ссылке выше, ваш файл начнет выглядеть так:
log4j.rootLogger=DEBUG, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
Простейшим было бы изменить строку:
log4j.rootLogger=DEBUG, R
Что-то вроде:
log4j.rootLogger=WARN, R
Но если вы все еще хотите, чтобы ваш собственный уровень DEBUG выводился из ваших собственных классов, добавьте строку, которая гласит:
log4j.category.com.mypackage=DEBUG
Немного прочитайте Log4J и Commons-Logging поможет вам понять все это.
Ответ 2
Сегодня я столкнулся с такой же проблемой, Райан.
В моем каталоге src (или в вашем корневом каталоге) мой файл log4j.properties теперь имеет следующее дополнение
# https://issues.apache.org/jira/browse/AXIS2-4363
log4j.category.org.apache.axiom=WARN
Спасибо за головы, как это сделать, Бенджамин.
Ответ 3
Эта работа для моего:
log4j.logger.org.hibernate.type=trace
Также можно попробовать:
log4j.category.org.hibernate.type=trace
Ответ 4
Я только что столкнулся с проблемой и не мог понять, что происходит не так, даже после прочтения всего вышеизложенного и всего там. То, что я сделал, было
- Установите уровень корневого регистратора в WARN
- Установить уровень журнала пакетов в DEBUG
Каждая реализация каротажа имеет свой собственный способ настройки через свойства или через код (много справок, доступных на этом)
Независимо от всего вышеизложенного я бы не получил журналы в моей консоли или в моем файле журнала. То, что я упустил, было ниже...
![введите описание изображения здесь]()
Все, что я делал с вышеуказанным фокусом, контролировало только создание журналов (у root/package/class и т.д.), слева от красной строки на изображении выше. Но я не менял способ отображения/потребления журналов того же самого, справа от красной линии на изображении выше. Обработчик (потребление) обычно дефолт в INFO, поэтому ваши драгоценные отладочные заявления не будут выполняться. Потребление/отображение контролируется установкой уровней журналов для обработчиков (ConsoleHandler/FileHandler и т.д.). Поэтому я пошел вперед и установил уровни журналов всех моих обработчиков в тончайшие, и все сработало.
Эта точка зрения не была четко изложена в любом месте.
Я надеюсь, что кто-то почесывает их голову, думая, почему свойства не работают, найдет этот бит полезным.
Ответ 5
установить системное свойство log4j.debug = true. Затем вы можете определить, где работает ваша конфигурация.