Welche Bedeutung hat die Eigenschaft log4j.rootLogger in der Datei log4j.properties? Was passiert, wenn ich diese Eigenschaft nicht verwende?

Lesezeit: 3 Minuten

Benutzer-Avatar
Jitendra

Welche Bedeutung hat log4j.rootLogger Eigentum ein log4j.properties Datei? Was passiert, wenn ich diese Eigenschaft nicht verwende?

Beispiel:

# 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

Was passiert, wenn ich diese Eigenschaft auf setze? ERROR Modus.

Benutzer-Avatar
Paul Varga

Samudra Gupta erklärt in seinem Buch1:

Das Logger Objekt ist das Hauptobjekt, das ein Anwendungsentwickler verwendet, um Nachrichten zu protokollieren. Das Logger Objekte, die innerhalb einer bestimmten Instanz einer Anwendung agieren, folgen a 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

Baum

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 Namensraum. Alle anderen anwendungsspezifisch Logger Objekte sind untergeordnete Objekte des Root-Loggers. Die Eltern-Kind-Beziehung von Loggern bedeutet die Abhängigkeit der Logger, die innerhalb derselben Anwendung agieren. Ein untergeordneter Logger kann Eigenschaften von seinem übergeordneten Logger rekursiv im Baum nach oben erben. Typischerweise 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 nach oben findet.
  • Appender: Wenn an einen Logger kein Appender angehängt ist, verwendet der untergeordnete Logger den Appender seines nächstgelegenen übergeordneten Loggers oder den ersten Appender, den er rekursiv im Baum nach oben findet.
  • ResourceBundle: ResourceBundles sind Schlüsselwertmuster-Eigenschaftsdateien, die für die Lokalisierung von Protokollmeldungen verwendet werden. Ein untergeordneter Logger erbt alle ResourceBundle dem übergeordneten Logger zugeordnet.

ANMERKUNGEN

1 Samudra Gupta, Pro Apache Log4j, Zweite Ausgabe (Berkeley, CA: Apress, 2005), 24-25, ISBN13: 978-1-59059-499-5

2 Dominic Mitchell, Einloggen in Java, http://happygiraffe.net/blog/2008/09/03/logging-in-java/Abgerufen am 26. Mai 2014.

  • +1 für “Es existiert immer als Root-Logger für alle möglichen Logger-Hierarchien und hat keinen Namensraum.”

    – Asim

    17. Juli 2016 um 11:45 Uhr

  • Was ist die Antwort auf diese Frage von OP – “Was passiert, wenn ich diese Eigenschaft nicht verwende?” ??

    – hagrawal

    29. September 2016 um 7:52 Uhr

  • Meine Güte … sehen Sie sich den Hintergrund auf dem Link zu Dominics Seite an. Absolut unlesbar.

    – MasterJoe

    13. Juli 2017 um 6:42 Uhr


  • @testerjoe2 – du hast Recht, obwohl es ein hübsches Bild ist, macht es es schwer zu lesen – wie in den alten HTML-Tagen, als die Leute einen gelben Hintergrund mit weißem Text hatten – lässt deine Augen bluten!

    – JGlass

    28. September 2018 um 15:58 Uhr

Antworten

Was passiert, wenn ich diese Eigenschaft nicht verwende?

Wenn Sie den rootLogger nicht auf eine Ebene und einen Appender setzen, erhalten Sie eine Warnung.

Zum Beispiel, wenn Sie die Zeile weglassen oder auskommentieren log4j.rootLogger=DEBUG, stdoutdh sagen Sie, Ihre log4j.properties-Datei enthält nur den Rootlogger und keine zusätzlichen Logger, hier wird der Root-Logger auskommentiert:

#log4j.rootLogger=DEBUG, stdout

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

Sie erhalten etwa die folgende Ausgabe:

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 Die Eigenschaft legt die Ebene (hier DEBUG) und den Appender (hier A1) für den Root-Logger fest. Dies ist nicht zwingend erforderlich. Root Logger hat keinen angehängten Standard-Appender und 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.

1282830cookie-checkWelche Bedeutung hat die Eigenschaft log4j.rootLogger in der Datei log4j.properties? Was passiert, wenn ich diese Eigenschaft nicht verwende?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy