Самудра Гупта объясняет в своей книге 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
Самудра Гупта продолжает объяснять:
На вершине иерархии находится корневой регистратор. Корневой регистратор существует за пределами любой пользовательской иерархии регистратора, которую мы можем придумать. Он всегда существует как корневой регистратор для всех возможных иерархий регистраторов и не имеет пространства имен. Все другие Logger
объекты, зависящие от приложения, являются дочерними объектами корневого регистратора. Родительско-дочерние отношения регистраторов обозначают зависимость регистраторов, действующих в одном приложении. Дочерний регистратор может рекурсивно наследовать свойства от своего родительского регистратора вверх по дереву. Обычно дочерний регистратор наследует следующие свойства от своего родительского регистратора (ов):
Level
: Если для дочернего регистратора не указан явный уровень дерева, он будет использовать уровень своего ближайшего родителя или первый надлежащий уровень, который он найдет рекурсивно вверх по иерархии.
Appender
: Если к регистратору не прикреплен аппендер, дочерний регистратор использует приложение своего ближайшего родительского регистратора или первое приложение, которое он находит рекурсивно вверх по дереву.
ResourceBundle
: ResourceBundles
- это файлы свойств шаблона "ключ-значение", используемые для локализации сообщений журнала. Дочерний регистратор наследует все, что ResourceBundle
связано с его родительским регистратором.
ПРИМЕЧАНИЯ
1 Самудра Гупта, Pro Apache Log4j, второе издание (Беркли, Калифорния: Apress, 2005), 24-25, ISBN13: 978-1-59059-499-5
2 Dominic Mitchell, Logging in Java , http://happygiraffe.net/blog/2008/09/03/logging-in-java/ , дата обращения 26 мая 2014 г.
Отвечать
Если вы не установите rootLogger на уровень и приложение, вы получите предупреждение.
Например, если вы опустите или закомментируете строку
log4j.rootLogger=DEBUG, stdout
, то есть скажите, что ваш файл log4j.properties содержит только rootlogger и никаких дополнительных регистраторов, здесь корневой регистратор закомментирован:Вы получите что-то вроде следующего:
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.
источник
Свойство log4j.rootLogger устанавливает уровень (здесь DEBUG) и Appender (здесь A1) для корневого регистратора. Это не обязательно. У корневого регистратора нет прикрепленного приложения по умолчанию, и он может существовать без приложения. Итак, ваш файл свойств log4j может быть без установки этого свойства.
Корневой регистратор - это самый верхний регистратор в иерархии log4j, аналогичный классу Object в Java.
источник