log4j kolejność hierarchii rejestrowania

169

Jaka jest hierarchia rejestrowania log4j?

DEBUG
INFO
WARN
ERROR
FATAL

Który z nich zapewnia najwyższe dzienniki, które byłyby pomocne przy rozwiązywaniu problemów? Czy ktoś może podać kolejność lub hierarchię, w której rejestrowanie odbywa się od najwyższego do najniższego? Dzięki!

Mikrofon
źródło

Odpowiedzi:

292

Ta tabela może Ci się przydać:

Poziom dziennika

Schodząc w dół do pierwszej kolumny, zobaczysz, jak działa dziennik na każdym poziomie. tzn. dla WARN , ( FATAL, ERROR i WARN ) będą widoczne. Po wyłączeniu nic nie będzie widoczne.

nxhoaf
źródło
Terminy widoczność i pozycja nie są oczywiste. Widzę, że oficjalna dokumentacja również jest niejasna. Sposób wyświetlania, takich jak error, info, debugitp z następców prawnych rejestratora poziom priorytetu / ciężkości do wiadomości rejestrowania. To, czy logowanie rzeczywiście przyniesie skutek (komunikat będzie widoczny), zależy od efektywnego poziomu logowania używanego rejestratora.
Wolf
1
link uszkodzony. proszę naprawić lub usunąć
yurin
Chociaż to odpowiada na pytanie (to po prostu pytanie o „porządek hierarchii”), w końcu przegłosowałem twoją kiepską terminologię: schodzenie w dół , „widoczność” działa , pozycja . Czy nie chciałeś wyjaśnić, w jaki sposób konfiguracja rejestratora wpływa na rzeczywiste rejestrowanie (przekazywanie zdarzeń dziennika)? Proszę wziąć pod uwagę kolejną aktualizację. Swoją drogą: tabela w oficjalnej dokumentacji (na końcu rozdziału) różni się leczeniem OFFi ALLcóż, po przeczytaniu niektórych źródeł (nie znajdując szczególnych przypadków) wątpię, czy ich tabela jest poprawna.
Wilk
Dziękuję Wolf, zaktualizowałem odpowiedź zgodnie z twoimi komentarzami.
nxhoaf
2
Myślę, że jest to doskonała wizualizacja poziomów dziennika i oczekiwanych typów komunikatów dziennika, które byłyby wyprowadzane dla określonego ustawienia poziomu rejestratora. Moją jedyną sugestią może być naprzemienne kolory wierszy, aby wskazać widzowi, że wykres powinien być interpretowany według wiersza, a nie kolumny. (tj. wiersze reprezentują poziomy rejestratorów, a kolumny reprezentują typy komunikatów dziennika, które byłyby obecne)
Larry Hector,
149

Użyj siły, przeczytaj źródło (wyciąg z klasy Priorityi Levelskompilowany, poziom TRACE został wprowadzony w wersji 1.2.12):

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; 

lub API log4j dla tej Levelklasy , co czyni to całkiem jasnym.

Kiedy biblioteka decyduje, czy wydrukować daną instrukcję, czy nie, oblicza efektywny poziom odpowiedzialnego Loggerobiektu (na podstawie konfiguracji) i porównuje go z LogEventpoziomem tej instrukcji (w zależności od tego, która metoda została użyta w kodzie - trace / debug / ... / śmiertelne ). Jeśli LogEventpoziom jest większy lub równy Loggerpoziomowi, to LogEventjest wysyłany do appender (ów) - "drukowany". W istocie wszystko sprowadza się do porównania liczb całkowitych i tutaj te stałe zaczynają działać.

MaDa
źródło
56
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL
the.malkolm
źródło
1
Jest to sprzeczne z informacjami podanymi na tutorialspoint.com/log4j/log4j_logging_levels.htm Która z nich jest prawdziwa ???
Mike,
1
sprawdź kod, w którym znajdują się zmienne całkowite, aby uzyskać dowód docjar.com/html/api/org/apache/log4j/Level.java.html
the.malkolm
4
pod twoim linkiem było napisane, że "ALL <DEBUG <INFO <WARN <ERROR <FATAL <OFF" i jest to dokładnie to samo, co powiedziałem
the.malkolm
6
Diagram Venna OFF () ALL (TRACE (DEBUG (INFO (WARN (ERROR (FATAL)))))))
Hernán Eche
@Mike na log4j Poziomy rejestrowania używają kolejności alfabetycznej w pierwszej tabeli . Z wyjątkiem zaginionego trace, później poprawnie stwierdzili, że ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF(co <oznacza mniej ważne)
Wilk
24

Hierarchia poziomów rejestrowania log4j jest następująca w kolejności od najwyższego do najniższego:

  • ŚLAD
  • ODPLUSKWIĆ
  • INFO
  • OSTRZEC
  • BŁĄD
  • FATALNY
  • POZA

Poziom dziennika TRACE zapewnia najwyższe rejestrowanie, które byłoby pomocne przy rozwiązywaniu problemów. Poziom dziennika DEBUG jest również bardzo przydatny do rozwiązywania problemów.

Możesz również skorzystać z tego łącza, aby uzyskać więcej informacji na temat poziomów dziennika: https://logging.apache.org/log4j/2.0/manual/architecture.html

Pathik Mehta
źródło
12

[Zaczerpnięte z http://javarevisited.blogspot.com/2011/05/top-10-tips-on-logging-in-java.html]

DEBUG jest najniższym ograniczonym poziomem logowania java i powinniśmy napisać wszystko, czego potrzebujemy do debugowania aplikacji. Ten tryb logowania java powinien być używany tylko w środowisku programistycznym i testowym i nie może być używany w środowisku produkcyjnym.

INFO jest bardziej ograniczone niż poziom logowania DEBUG java i powinniśmy rejestrować wiadomości, które mają charakter informacyjny, takie jak serwer został uruchomiony, wiadomości przychodzące, wiadomości wychodzące itp. W logowaniu na poziomie INFO w java.

WARN jest bardziej ograniczony niż poziom logowania INFO java i jest używany do rejestrowania komunikatów ostrzegawczych, np. Utrata połączenia między klientem a serwerem. Utracono połączenie z bazą danych, gniazdo osiągnęło limit. Te komunikaty i poziom rejestrowania w Javie są prawie ważne, ponieważ można ustawić alert dla tych komunikatów logowania w języku Java i pozwolić zespołowi pomocy technicznej monitorować stan aplikacji Java i reagować na te komunikaty ostrzegawcze. W Podsumowaniu poziom WARN służy do logowania ostrzeżenia o logowaniu w Javie.

ERROR to bardziej ograniczony poziom rejestrowania Java niż WARN i używany do rejestrowania błędów i wyjątków. Możesz również ustawić alert na tym poziomie logowania Java i zespół monitorujący alert, aby reagował na te wiadomości. BŁĄD jest poważnym problemem przy logowaniu w Javie i zawsze powinieneś go wydrukować.

KRYTYCZNY poziom logowania java oznacza bardzo poważne zdarzenia błędów, które prawdopodobnie doprowadzą do przerwania działania aplikacji. Po tym większość aplikacji ulega awarii i przestaje działać.

OFF poziom logowania java ma najwyższą możliwą rangę i ma na celu wyłączenie logowania w Javie.

chocolatecastle
źródło
4

Porządek hierarchii

  1. WSZYSTKO
  2. ŚLAD
  3. ODPLUSKWIĆ
  4. INFO
  5. OSTRZEC
  6. BŁĄD
  7. FATALNY
  8. POZA
Sarath
źródło