Как изменить уровень журнала пакета с помощью Log4j? - PullRequest
56 голосов
/ 13 ноября 2009

Я столкнулся со следующей ошибкой:

http://issues.apache.org/jira/browse/AXIS2-4363

В нем говорится следующее:

Эта ошибка возникает только при уровне журнала для org.apache.axiom это DEBUG, так что Обходной путь должен установить уровень журнала> 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

но это, по-видимому, неверно, так как этот код возвращает «Уровень журнала равен нулю»:

System.out.println("Log level is " + logger.getLevel());

На данный момент я устанавливаю уровень журнала в коде, используя

Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);

Ответы [ 5 ]

59 голосов
/ 13 ноября 2009

Какой сервер приложений вы используете? Каждый из них помещает свою конфигурацию регистрации в другое место, хотя большинство в настоящее время использует Commons-Logging в качестве оболочки вокруг Log4J или java.util.logging.

Используя Tomcat в качестве примера, этот документ объясняет ваши параметры для настройки ведения журнала с использованием любого из этих параметров. В любом случае вам нужно найти или создать файл конфигурации, который определяет уровень журнала для каждого пакета, и в каждом месте система ведения журнала будет выводить информацию журнала (обычно это console, file или 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 поможет вам понять все это.

7 голосов
/ 07 июля 2010

Сегодня я столкнулся с точно такой же проблемой, Райан.

В моем src (или вашем корневом) каталоге мой файл log4j.properties теперь содержит следующее добавление

# https://issues.apache.org/jira/browse/AXIS2-4363
log4j.category.org.apache.axiom=WARN

Спасибо за советы, как это сделать, Бенджамин.

3 голосов
/ 14 июня 2012

Эта работа для меня:

log4j.logger.org.hibernate.type=trace

Также можете попробовать:

log4j.category.org.hibernate.type=trace
2 голосов
/ 24 сентября 2017

Я только что столкнулся с проблемой и не мог понять, что идет не так, даже после прочтения всего вышеупомянутого и всего там. То, что я сделал, было

  1. Установить уровень корневого логгера на WARN
  2. Установить уровень журнала пакетов на DEBUG

Каждая реализация ведения журналов имеет свой собственный способ настройки через свойства или код (много справки доступно по этому вопросу)

Независимо от всего вышесказанного я не получал бы журналы в своей консоли или в файле журнала. То, что я упустил из виду, было ниже ...


enter image description here


Все, что я делал с вышеупомянутым жонглированием, контролировало только производство журналов (в корне / пакете / классе и т. Д.) Слева от красной линии на изображении выше. Но я не менял способ отображения / потребления логов того же самого, справа от красной линии на изображении выше. Обработчик (Потребление) обычно устанавливается по умолчанию в INFO, поэтому ваши драгоценные отладочные операторы не пройдут. Потребление / отображение контролируется путем установки уровней журналов для обработчиков (ConsoleHandler / FileHandler и т. Д.). Поэтому я продолжил и установил уровни журналирования всех моих обработчиков как наиболее точные, и все заработало.

Этот пункт не был четко прояснен в любом месте.

Я надеюсь, что кто-то почесал голову, подумав, почему свойства не работают, найдет этот бит полезным.

0 голосов
/ 26 января 2016

установить системное свойство log4j.debug = true. Тогда вы можете определить, где ваша конфигурация работает плохо.

...