Reihenfolge der Protokollierungshierarchie log4j

169

Wie ist die Hierarchie der log4j-Protokollierung?

DEBUG
INFO
WARN
ERROR
FATAL

Welches bietet die höchste Protokollierung, die zur Behebung von Problemen hilfreich ist? Kann jemand die Reihenfolge oder Hierarchie angeben, in der die Protokollierung vom höchsten zum niedrigsten Wert erfolgt? Vielen Dank!

Mike
quelle

Antworten:

292

Diese Tabelle könnte für Sie hilfreich sein:

Protokollstufe

In der ersten Spalte sehen Sie, wie das Protokoll in den einzelnen Ebenen funktioniert. dh für WARN ist ( FATAL, ERROR und WARN ) sichtbar. Für AUS ist nichts sichtbar.

nxhoaf
quelle
Die Begriffe Sichtbarkeit und Artikel sind nicht selbsterklärend. Ich sehe, dass die offizielle Dokumentation diesbezüglich ebenfalls vage ist. Das Ausgabeverfahren , wie beispielsweise error, info, debugusw. des Logger Abtretungsempfängers eine Priorität / Dringlichkeitsstufe an die Protokollierungs Nachricht. Ob die Protokollierung tatsächlich wirksam wird (die Meldung wird angezeigt), hängt von der effektiven Protokollierungsstufe des verwendeten Protokollierers ab.
Wolf
1
Link defekt. Bitte reparieren oder entfernen
Yurin
Obwohl diese beantwortet die Frage (die für die „Hierarchie Ordnung“ nur gefragt wird ), schließlich ich für Ihre schlechte Terminologie downvoted: going down , „Sichtbarkeit“ Werke , Artikel . Wollten Sie nicht erklären, wie sich die Logger-Konfiguration auf die eigentliche Protokollierung auswirkt (Übergeben von Protokollereignissen)? Bitte beachten Sie ein weiteres Update. Übrigens: Die Tabelle in der offiziellen Dokumentation (am Ende des Abschnitts) unterscheidet sich in der Behandlung, OFFund ALLnachdem ich einige Quellen gelesen habe (keine Sonderfälle gefunden habe), bezweifle ich, dass ihre Tabelle korrekt ist.
Wolf
Danke Wolf, ich habe die Antwort entsprechend deinen Kommentaren aktualisiert.
Nxhoaf
2
Ich denke, dies ist eine hervorragende Visualisierung der Protokollstufen und der erwarteten Protokollnachrichtentypen, die für eine bestimmte Einstellung der Protokollierungsstufe ausgegeben werden würden. Mein einziger Vorschlag könnte sein, abwechselnde Zeilenfarben zu verwenden, um den Betrachter zu leiten, dass das Diagramm eher nach Zeilen als nach Spalten interpretiert werden soll. (dh die Zeilen repräsentieren Logger-Ebenen und die Spalten repräsentieren Log-Nachrichtentypen, die vorhanden wären)
Larry Hector
149

Verwenden Sie die Kraft, lesen Sie die Quelle (Auszug aus der Priorityund LevelKlasse kompiliert, TRACE-Level wurde in Version 1.2.12 eingeführt):

public final static int OFF_INT = Integer.MAX_VALUE;
public final static int FATAL_INT = 50000;
public final static int ERROR_INT = 40000;
public final static int WARN_INT  = 30000;
public final static int INFO_INT  = 20000;
public final static int DEBUG_INT = 10000;
public static final int TRACE_INT = 5000; 
public final static int ALL_INT = Integer.MIN_VALUE; 

oder die log4j-API für die LevelKlasse , was es ziemlich deutlich macht.

Wenn die Bibliothek entscheidet, ob eine bestimmte Anweisung gedruckt werden soll oder nicht, berechnet sie die effektive Ebene des verantwortlichen LoggerObjekts (basierend auf der Konfiguration) und vergleicht sie mit der Ebene des Objekts LogEvent(abhängig davon, welche Methode im Code verwendet wurde - trace / debug / ... / tödlich ). Wenn LogEventdie Stufe größer oder gleich der LoggerStufe ist, LogEventwird die an Appender gesendet - "gedruckt". Im Kern läuft alles auf einen ganzzahligen Vergleich hinaus, und hier kommen diese Konstanten zum Einsatz.

MaDa
quelle
56
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL
the.malkolm
quelle
1
Dies steht im Widerspruch zu den Informationen unter tutorialspoint.com/log4j/log4j_logging_levels.htm. Welche ist wahr?
Mike
1
Überprüfen Sie den Code, in dem sich ganzzahlige Variablen für den Beweis befinden. docjar.com/html/api/org/apache/log4j/Level.java.html
the.malkolm
4
Auf Ihrem Link stand "ALL <DEBUG <INFO <WARN <ERROR <FATAL <OFF" und es war genau das gleiche wie ich sagte
the.malkolm
6
Venn Diagramm OFF () ALL (TRACE (DEBUG (INFO (WARN (ERROR (FATAL)))))
Hernán Eche
@Mike auf log4j Protokollierungsstufen verwenden sie in der ersten Tabelle die alphabetische Reihenfolge . Mit Ausnahme der Vermissten geben tracesie später korrekt an, dass ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF(wobei <weniger wichtig bedeutet)
Wolf
24

Die Hierarchie der log4j-Protokollierungsstufen ist in der höchsten bis niedrigsten Reihenfolge wie folgt:

  • SPUR
  • DEBUGGEN
  • DIE INFO
  • WARNEN
  • ERROR
  • TÖDLICH
  • AUS

Die TRACE-Protokollstufe bietet die höchste Protokollierung, die zur Behebung von Problemen hilfreich ist. Die DEBUG-Protokollstufe ist auch sehr nützlich, um Probleme zu beheben.

Weitere Informationen zu den Protokollebenen finden Sie unter diesem Link: https://logging.apache.org/log4j/2.0/manual/architecture.html

Pathik Mehta
quelle
12

[Entnommen aus http://javarevisited.blogspot.com/2011/05/top-10-tips-on-logging-in-java.html]

DEBUG ist die niedrigste eingeschränkte Java-Protokollierungsstufe. Wir sollten alles schreiben, was wir zum Debuggen einer Anwendung benötigen. Dieser Java-Protokollierungsmodus sollte nur in Entwicklungs- und Testumgebungen und nicht in Produktionsumgebungen verwendet werden.

INFO ist eingeschränkter als die Java-Protokollierungsstufe DEBUG, und wir sollten Nachrichten protokollieren, die zu informativen Zwecken dienen, z. B. Server wurde gestartet, eingehende Nachrichten, ausgehende Nachrichten usw. in der Java-Protokollierung auf INFO-Ebene.

WARN ist eingeschränkter als die Java-Protokollierungsstufe INFO und wird zum Protokollieren von Warnmeldungen verwendet, z. B. Verbindungsverlust zwischen Client und Server. Datenbankverbindung unterbrochen, Socket erreicht sein Limit. Diese Nachrichten und die Java-Protokollierungsstufe sind fast wichtig, da Sie eine Warnung für diese Protokollierungsnachrichten in Java einrichten und Ihr Support-Team den Zustand Ihrer Java-Anwendung überwachen und auf diese Warnmeldungen reagieren lassen können. In der Zusammenfassung wird die WARN-Ebene verwendet, um Warnmeldungen für die Protokollierung in Java zu protokollieren.

ERROR ist die eingeschränktere Java-Protokollierungsstufe als WARN und wird zum Protokollieren von Fehlern und Ausnahmen verwendet. Sie können auch eine Warnung auf dieser Java-Protokollierungsstufe einrichten und das Alarmüberwachungsteam auf diese Nachrichten reagieren. FEHLER ist ernst für die Anmeldung in Java und Sie sollten es immer drucken.

Die Java-Protokollierungsstufe FATAL kennzeichnet sehr schwerwiegende Fehlerereignisse, die vermutlich zum Abbruch der Anwendung führen. Danach stürzt Ihre Anwendung meistens ab und wird gestoppt.

AUS Die Java-Protokollierungsstufe hat den höchstmöglichen Rang und soll die Protokollierung in Java deaktivieren.

Schokoladenburg
quelle
4

Hierarchieordnung

  1. ALLES
  2. SPUR
  3. DEBUGGEN
  4. DIE INFO
  5. WARNEN
  6. ERROR
  7. TÖDLICH
  8. AUS
Sarath
quelle