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

Каково значение свойства log4j.rootLogger в файле log4j.properties. Что произойдет, если я не использую это свойство?

Каково значение свойства log4j.rootLogger в файле log4j.properties? Что произойдет, если я не использую это свойство?

Пример:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

Что произойдет, если я установил это свойство в режим ERROR.

4b9b3361

Ответ 1

Самудра Гупта объясняет в своей книге 1:

Объект Logger - это основной объект, который разработчик приложения использует для регистрации любого сообщения. Объекты Logger, действующие в конкретном экземпляре приложения, следуют иерархии с родительским и дочерним.

Если у вас есть следующая конфигурация:

log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.me.proj2=INFO

Таким образом, иерархия регистратора может выглядеть: 2

Tree

Самудра Гупта продолжает объяснять:

В верхней части иерархии существует корневой регистратор. Корневой регистратор существует за пределами любой пользовательской иерархии журналов, с которой мы можем столкнуться. Он всегда существует в качестве корневого регистратора для всех возможных иерархии журналов и не имеет пространства имен. Все другие специфичные для приложения объекты Logger являются дочерними объектами корневого регистратора. Родительско-дочерние отношения регистраторов означают зависимость регистраторов, действующих в одном приложении. Детский регистратор может наследовать свойства из родительского регистратора рекурсивно по дереву. Как правило, дочерний регистратор наследует следующие свойства из своего родительского регистратора (ов):

  • Level: Если у дочернего регистратора нет указанного явного уровня дерева, он будет использовать уровень своего ближайшего родителя или первого правильного уровня, который он найдет рекурсивно по иерархии.
  • Appender: если к регистратору не подключено приложение, дочерний регистратор использует приложение своего ближайшего родительского регистратора или первое приложение, которое он находит рекурсивно по дереву.
  • ResourceBundle: ResourceBundles - это свойства свойств шаблона ключевого значения, используемые для локализации сообщений протоколирования. Детский регистратор наследует любой ResourceBundle, связанный с его родительским регистратором.

ПРИМЕЧАНИЯ

1 Самудра Гупта, Pro Apache Log4j, второе издание (Berkeley, CA: Apress, 2005), 24-25, ISBN13: 978-1-59059-499-5

2 Доминик Митчелл, Вход в Java, http://happygiraffe.net/blog/2008/09/03/logging-in-java/, Проверено 26 мая 2014 года.

Ответ 2

свойство log4j.rootLogger устанавливает уровень (DEBUG здесь) и Appender (здесь A1) для корневого регистратора. Это не обязательно. Корневой регистратор не имеет прикрепленного приложения по умолчанию и может существовать без приложения. Таким образом, ваш файл свойств log4j может быть без этого свойства.

Корневой регистратор - это самый высокий регистратор в иерархии log4j, аналогичный классу Object в Java.

Ответ 3

Чтобы ответить

Что произойдет, если я не использую это свойство?

Если вы не установили rootLogger на уровень и приложение, вы получите предупреждение.

Например, если вы опускаете или комментируете строку log4j.rootLogger=DEBUG, stdout, т.е. ваш файл log4j.properties содержит только корневой загрузчик и никаких дополнительных регистраторов, здесь комментируется корневой журнал:

#log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

Вы получите что-то вроде следующего вывода:

log4j:WARN No appenders could be found for logger (log4jtests.Log4jHelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.