Рубрики
Без рубрики

значение log4j.rootLogger в файле log4j.properties

регистратор log4j.root в файле log4j.properties – использование с уровнем и добавлениями, такими как ИНФОРМАЦИЯ, stdout. Что делать, если он не настроен? Как это сделать в log4j.xml конфигурация

Автор оригинала: Pankaj Kumar.

log4j.rootLogger находится на вершине всей иерархии регистраторов, точно так же, как у нас есть объекты в классах java. Поэтому всякий раз, когда вы ведете журнал и нет совпадения с конфигурацией регистратора, будет использоваться конфигурация корневого регистратора.

пример log4j.rootLogger

Давайте разберемся в этом на простом примере. Предположим, у нас есть файл log4j.properties, как показано ниже.

#Define root logger options
log4j.rootLogger=DEBUG, console

#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - (%F:%L) %m%n

#Define loggers
log4j.logger.com.journaldev.log4j.main=ERROR, console

#setting additivity
log4j.additivity.com.journaldev.log4j.main=false

А вот простая программа на java в пакете com.journaldev.log4j.main , соответствующая регистратору, определенному выше.

package com.journaldev.log4j.main;

import org.apache.log4j.Logger;

public class Log4jExample {

	private final static Logger logger = Logger.getLogger(Log4jExample.class);

	public static void main(String[] args) {
		logger.trace("My Trace Log");
		logger.debug("My Debug Log");
		logger.info("My Info Log");
		logger.warn("My Warn Log");
		logger.error("My error log");
		logger.fatal("My fatal log");
	}

}

На рисунке ниже показан вывод, когда мы его запускаем.

Теперь ниже приведен вывод , когда я изменяю объявление пакета на com.journaldev.log4j.main 1 , чтобы оно не совпадало ни с одним из определенных регистраторов.

Здесь используется конфигурация корневого регистратора, т. е. уровень ведения журнала как ОТЛАДКА и одно приложение “консоль”.

Итак, требуется ли всегда определять log4j.rootLogger?

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

Поэтому, если я прокомментирую конфигурацию корневого регистратора выше, и моя программа java находится в com.journaldev.log4j.main package, то для нее определен регистратор, и все работает нормально.

Но если я запускаю свою программу java из com.journaldev.log4j.main 1 пакета, для которого не определен регистратор, он пытается найти конфигурацию корневого регистратора и не находит ее. Поэтому он печатает ниже предупреждающее сообщение для консоли.

log4j:WARN No appenders could be found for logger (com.journaldev.log4j.main1.Log4jExample).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See https://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Наконец, как мы определяем одно и то же в log4j.xml досье?

Ниже приведена конфигурация на основе XML с тем же, что и выше, файлом log4j.properties.


	
	

Это все для значения и использования конфигурации корневого регистратора log4j.