Samudra Gupta wyjaśnia w swojej książce 1 :
Logger
Obiekt jest głównym obiektem, który deweloper aplikacja używa do logowania żadnej wiadomości. Te Logger
obiekty działające w konkretnym przypadku wniosku przestrzegać hierarchii rodzic-dziecko .
Jeśli masz następującą konfigurację:
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
Oto jak mogłaby wyglądać hierarchia rejestratorów: 2
Samudra Gupta nadal wyjaśnia:
Na szczycie hierarchii znajduje się główny program rejestrujący. Główny program rejestrujący istnieje poza zakresem jakiejkolwiek niestandardowej hierarchii programu rejestrującego, którą możemy wymyślić. Zawsze istnieje jako główny program rejestrujący dla wszystkich możliwych hierarchii programów rejestrujących i nie ma przestrzeni nazw. Wszystkie inne Logger
obiekty specyficzne dla aplikacji są obiektami podrzędnymi głównego programu rejestrującego. Relacja nadrzędny-podrzędny rejestratorów oznacza zależność rejestratorów działających w ramach tej samej aplikacji. Podrzędny program rejestrujący może dziedziczyć właściwości ze swojego nadrzędnego programu rejestrującego rekurencyjnie w górę drzewa. Zwykle podrzędny program rejestrujący dziedziczy następujące właściwości ze swoich nadrzędnych programów rejestrujących:
Level
: Jeśli podrzędny program rejestrujący nie ma określonego wyraźnego poziomu drzewa, użyje poziomu swojego najbliższego rodzica lub pierwszego odpowiedniego poziomu, jaki znajdzie rekurencyjnie w hierarchii.
Appender
: Jeśli nie ma programu dołączającego dołączonego do programu rejestrującego, program podrzędny używa programu dołączającego swojego najbliższego nadrzędnego programu rejestrującego lub pierwszego programu dołączającego, który znajdzie rekurencyjnie w górę drzewa.
ResourceBundle
: ResourceBundles
są plikami właściwości wzorca klucz-wartość używanymi do lokalizacji komunikatów rejestrowania. Podrzędny program rejestrujący dziedziczy wszystkie ResourceBundle
skojarzone z jego nadrzędnym programem rejestrującym.
UWAGI
1 Samudra Gupta, Pro Apache Log4j, wydanie drugie (Berkeley, CA: 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/ , Źródło 26 maja 2014.
Odpowiedzieć
Jeśli nie ustawisz rootLoggera na poziom i appender, otrzymasz ostrzeżenie.
Na przykład, jeśli pominiesz lub
log4j.rootLogger=DEBUG, stdout
zakomentujesz wiersz , tj. Powiedzmy, że twój plik log4j.properties zawiera tylko rootlogger i żadnych dodatkowych loggerów, tutaj główny program rejestrujący jest komentowany:Otrzymasz coś podobnego do następującego wyniku:
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.
źródło
Właściwość log4j.rootLogger ustawia Level (tutaj DEBUG) i Appender (tutaj A1) dla głównego rejestratora. Nie jest to obowiązkowe. Rejestrator główny nie ma dołączonego domyślnego programu dołączającego i może istnieć bez niego. Zatem plik właściwości log4j może być bez ustawiania tej właściwości.
Rejestrator główny jest najwyższym programem rejestrującym w hierarchii log4j, podobnie jak klasa Object w Javie.
źródło