Подтвердить что ты не робот

Как изменить уровень журнала пакетов с помощью 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);
4b9b3361

Ответ 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. Затем вы можете определить, где работает ваша конфигурация.