log4j - Protokollierungsstufen

Das org.apache.log4j.LevelEbenen. Sie können Ihre benutzerdefinierten Ebenen auch definieren, indem Sie die unterklassifizierenLevel Klasse.

Niveau Beschreibung
ALLE Alle Ebenen einschließlich benutzerdefinierter Ebenen.
DEBUGGEN Bezeichnet feinkörnige Informationsereignisse, die zum Debuggen einer Anwendung am nützlichsten sind.
DIE INFO Bezeichnet Informationsnachrichten, die den Fortschritt der Anwendung auf grobkörniger Ebene hervorheben.
WARNEN Bezeichnet potenziell schädliche Situationen.
ERROR Bezeichnet Fehlerereignisse, bei denen die Anwendung möglicherweise weiterhin ausgeführt werden kann.
TÖDLICH Bezeichnet sehr schwerwiegende Fehlerereignisse, die vermutlich zum Abbruch der Anwendung führen.
AUS Der höchstmögliche Rang und soll die Protokollierung deaktivieren.
SPUR Bezeichnet feinkörnigere Informationsereignisse als der DEBUG.

Wie funktionieren Levels?

Eine Protokollanforderung der Ebene p in einem Logger mit Ebene q ist enabledwenn p> = q. Diese Regel ist das Herzstück von log4j. Es wird davon ausgegangen, dass die Ebenen geordnet sind. Für die Standardstufen haben wir ALL <DEBUG <INFO <WARN <ERROR <FATAL <OFF.

Das folgende Beispiel zeigt, wie wir alle unsere DEBUG- und INFO-Nachrichten filtern können. Dieses Programm verwendet die Protokollierungsmethode setLevel (Level.X), um eine gewünschte Protokollierungsstufe festzulegen:

In diesem Beispiel werden alle Nachrichten außer Debug und Info gedruckt:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

Wenn Sie das kompilieren und ausführen LogClass Programm würde es das folgende Ergebnis erzeugen -

Warn Message!
Error Message!
Fatal Message!

Festlegen von Ebenen mithilfe der Konfigurationsdatei

log4j bietet Ihnen eine auf Konfigurationsdateien basierende Ebeneneinstellung, mit der Sie den Quellcode nicht mehr ändern können, wenn Sie die Debugging-Ebene ändern möchten.

Im Folgenden finden Sie eine Beispielkonfigurationsdatei, die dieselbe Aufgabe ausführen würde wie die log.setLevel(Level.WARN) Methode im obigen Beispiel.

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = WARN, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Lassen Sie uns jetzt unser folgendes Programm verwenden -

import org.apache.log4j.*;

public class LogClass {

   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
   
      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

Kompilieren Sie nun das obige Programm und führen Sie es aus. Sie erhalten dann das folgende Ergebnis /usr/home/log4j/log.out Datei -

Warn Message!
Error Message!
Fatal Message!