log4j - poziomy rejestrowania

Plik org.apache.log4j.Levelpoziomy. Możesz również zdefiniować własne poziomy, klasyfikując podklasyLevel klasa.

Poziom Opis
WSZYSTKO Wszystkie poziomy, w tym poziomy niestandardowe.
ODPLUSKWIĆ Wyznacza szczegółowe zdarzenia informacyjne, które są najbardziej przydatne do debugowania aplikacji.
INFO Wyznacza komunikaty informacyjne, które podkreślają postęp aplikacji na gruboziarnistym poziomie.
OSTRZEC Oznacza potencjalnie szkodliwe sytuacje.
BŁĄD Wyznacza zdarzenia błędów, które mogą nadal umożliwiać kontynuowanie działania aplikacji.
FATALNY Oznacza bardzo poważne błędy, które prawdopodobnie doprowadzą do przerwania działania aplikacji.
POZA Najwyższa możliwa ranga i ma na celu wyłączenie logowania.
ŚLAD Wyznacza bardziej szczegółowe zdarzenia informacyjne niż DEBUG.

Jak działają poziomy?

Żądanie dziennika poziomu p w loggerze z poziomicą q jest enabledjeśli p> = q. Ta zasada leży u podstaw log4j. Zakłada, że ​​poziomy są uporządkowane. Dla poziomów standardowych mamy ALL <DEBUG <INFO <WARN <ERROR <FATAL <OFF.

Poniższy przykład pokazuje, jak możemy filtrować wszystkie nasze komunikaty DEBUG i INFO. Ten program używa metody rejestratora setLevel (Level.X) do ustawienia żądanego poziomu rejestrowania:

W tym przykładzie zostaną wydrukowane wszystkie wiadomości z wyjątkiem debugowania i informacji:

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!");
   }
}

Podczas kompilowania i uruchamiania LogClass program wygeneruje następujący wynik -

Warn Message!
Error Message!
Fatal Message!

Ustawianie poziomów za pomocą pliku konfiguracyjnego

log4j zapewnia ustawienie poziomu oparte na pliku konfiguracyjnym, które uwalnia Cię od zmiany kodu źródłowego, gdy chcesz zmienić poziom debugowania.

Poniżej znajduje się przykładowy plik konfiguracyjny, który wykonywałby to samo zadanie, co przy użyciu log.setLevel(Level.WARN) w powyższym przykładzie.

# 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

Skorzystajmy teraz z naszego następującego programu -

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!");
   }
}

Teraz skompiluj i uruchom powyższy program, a otrzymasz następujący wynik w /usr/home/log4j/log.out plik -

Warn Message!
Error Message!
Fatal Message!