2009-11-12 7 views
52

Я столкнулся со следующей ошибки:Как изменить уровень журнала пакета с помощью Log4j?

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 

, но это, видимо, не так, как этот код возвращается «Log уровня является нулевым»:

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

Сейчас я устанавливаю уровень войти код, используя

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

я все еще возникают проблемы с этим - я добавил log4j.properties файл в корне консольного приложения, но не прибавляя log4j.rootLogger = WARN, R или log4j.logger.org.apache.axiom = WARN , похоже, что-то делает - я получаю ту же ошибку, что и раньше. –

ответ

52

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

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

Но если вы все еще хотите, чтобы ваш O шп выходного уровня DEBUG из ваших собственных классов добавить строку, которая говорит:

log4j.category.com.mypackage=DEBUG 

Чтение немного на Log4JCommons-Logging и поможет вам понять все это.

+0

Прямо сейчас я просто пытаюсь запустить некоторый код в качестве консольного приложения. Я посмотрю, смогу ли я выяснить, куда должен идти файл log4j.properties. Благодарю. –

+1

+1 Хорошая информация, спасибо –

+3

Категория устарела в log4j с регистратором – janwen

7

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

В моем ЦСИ (или корневой) каталог, мой 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 
0

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

2

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

  1. Установить уровень корневой регистратор предостеречь
  2. Установить уровень протоколирования пакет DEBUG

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

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


enter image description here


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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^