Samudra Gupta erklärt in seinem Buch 1 :
Das Logger
Objekt ist das Hauptobjekt, mit dem ein Anwendungsentwickler eine Nachricht protokolliert. Die Logger
Objekte, die in einer bestimmten Instanz einer Anwendung agieren, folgen einer Eltern-Kind-Hierarchie .
Wenn Sie die folgende Konfiguration haben:
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
So könnte die Logger-Hierarchie aussehen: 2
Samudra Gupta erklärt weiter:
An der Spitze der Hierarchie befindet sich ein Root-Logger. Der Root-Logger existiert außerhalb des Bereichs einer benutzerdefinierten Logger-Hierarchie, die wir möglicherweise entwickeln. Es existiert immer als Root-Logger für alle möglichen Logger-Hierarchien und hat keinen Namespace. Alle anderen anwendungsspezifischen Logger
Objekte sind untergeordnete Objekte für den Root-Logger. Die Eltern-Kind-Beziehung von Protokollierern gibt die Abhängigkeit der Protokollierer an, die in derselben Anwendung agieren. Ein untergeordneter Logger kann Eigenschaften rekursiv im Baum von seinem übergeordneten Logger erben. In der Regel erbt ein untergeordneter Logger die folgenden Eigenschaften von seinen übergeordneten Loggern:
Level
: Wenn für den untergeordneten Logger keine explizite Baumebene angegeben ist, verwendet er die Ebene seines nächsten übergeordneten Elements oder die erste richtige Ebene, die er rekursiv in der Hierarchie findet.
Appender
: Wenn an einen Logger kein Appender angehängt ist, verwendet der untergeordnete Logger den Appender seines nächsten übergeordneten Loggers oder den ersten Appender, den er rekursiv im Baum findet.
ResourceBundle
: ResourceBundles
sind Schlüsselwertmuster-Eigenschaftendateien, die für die Lokalisierung von Protokollierungsnachrichten verwendet werden. Ein untergeordneter Logger erbt alle ResourceBundle
mit seinem übergeordneten Logger verknüpften Logger.
ANMERKUNGEN
1 Samudra Gupta, Pro Apache Log4j, Zweite Ausgabe (Berkeley, CA: Apress, 2005), 24-25, ISBN13: 978-1-59059-499-5
2 Dominic Mitchell, Anmelden in Java , http://happygiraffe.net/blog/2008/09/03/logging-in-java/ , Abgerufen am 26. Mai 2014.
Antworten
Wenn Sie den rootLogger nicht auf eine Ebene und einen Appender setzen, erhalten Sie eine Warnung.
Wenn Sie beispielsweise die Zeile weglassen oder
log4j.rootLogger=DEBUG, stdout
auskommentieren, dh wenn Ihre Datei log4j.properties nur den Rootlogger und keine zusätzlichen Logger enthält, wird hier der Root-Logger auskommentiert:Sie erhalten so etwas wie die folgende Ausgabe:
quelle
Die Eigenschaft log4j.rootLogger legt die Ebene (DEBUG hier) und den Appender (A1 hier) für den Root-Logger fest. Dies ist nicht zwingend erforderlich. Dem Root-Logger ist kein Standard-Appender zugeordnet, und er kann ohne Appender existieren. Ihre log4j-Eigenschaftendatei kann also ohne diese Eigenschaft festgelegt werden.
Der Root-Logger ist der höchste Logger in der log4j-Hierarchie, ähnlich der Object-Klasse in Java.
quelle