4.1 Lista poziomów logowania

Napisałeś swój program, wgrałeś go na serwer i od razu pojawiają się pytania:

  • Jak upewnić się, że debug()metoda nie działa podczas pracy w production?
  • W dziennikach jest za dużo informacji, czy chcesz zostawić tylko komunikaty o błędach?
  • Jak wyświetlić szczegółowy log dla jednej części aplikacji?

Oczywiście twórcy dzienników stanęli przed tym samym problemem kilkadziesiąt lat temu. Nie powiem ci, jak ten problem został rozwiązany w języku C, ale w języku Java został rozwiązany bardzo pięknie.

Dziennik filtruje dane przed zapisaniem informacji w pliku . Możesz bardzo szybko zmniejszyć / zwiększyć szczegółowość dziennika, ustawiając poziom logowania. Poziomy te opisano w poniższej tabeli:

Poziom Notatka
1 WSZYSTKO Rejestruj wszystkie wiadomości
2 NAMIERZAĆ Mała wiadomość podczas debugowania
3 ODPLUSKWIĆ Komunikaty ważne dla debugowania
4 INFORMACJE Proste wiadomości
5 OSTRZEGAĆ Pisz tylko fatalny, błąd i ostrzeżenie
6 BŁĄD Zapisuj tylko błędy i błędy krytyczne
7 FATALNY Pisz tylko błędy krytyczne
8 WYŁĄCZONY Nie zapisuj wiadomości do dziennika

Te poziomy są używane podczas filtrowania wiadomości. Jeśli ustawisz poziom rejestrowania na WARN, to wszystkie wiadomości mniej ważne niż WARNzostaną odrzucone: TRACE, DEBUG, INFO. Jeśli ustawisz poziom filtrowania na FATAL, to nawet ERROR.

Istnieją jeszcze dwa poziomy istotności używane podczas filtrowania — ten OFF(odrzuca wszystkie wiadomości) i ALL— zapisuje wszystkie wiadomości (nic nie odrzuca).

4.2 Przykład konfiguracji dziennika

Spójrzmy na prosty przykład konfiguracji dziennika. W tym celu potrzebujemy pliku log4j.properties, który można umieścić w folderze zasobów. Dodajmy do niego następującą treść:

# Root logger option
log4j.rootLogger=WARN, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}

Tutaj w pierwszej linii ustawiamy poziom logowania - WARN. A to oznacza, że ​​komunikaty zapisywane do rejestratora ze statusem DEBUGbędą INFOignorowane.

  • Określ jakiego typu appender będziemy używać -ConsoleAppender
  • Określ, gdzie będziemy zapisywać dziennik -System.out
  • Ustawiamy klasę, która będzie kontrolować format nagrywania -PatternLayout
  • Ustaw format nagrywania dla wszystkich wiadomości - datę i godzinę

4.3 Popularne błędy w logowaniu

I jeszcze jeden ważny punkt - popularne błędy w logowaniu. Nie ma tak wielu opcji, aby coś zrobić, ale można zidentyfikować kilka typowych błędów:

  1. Za dużo logowania . Nie należy rejestrować każdego kroku, który teoretycznie może mieć znaczenie. Jest zasada: logi mogą obciążyć wydajność nie więcej niż o 10% . W przeciwnym razie wystąpią problemy z wydajnością.
  2. Logowanie wszystkich danych do jednego pliku . Spowoduje to, że w pewnym momencie odczyt/zapis będzie bardzo trudny, nie wspominając o tym, że w niektórych systemach istnieją ograniczenia rozmiaru plików.
  3. Używanie niewłaściwych poziomów rejestrowania . Każdy poziom rejestrowania ma wyraźne granice i należy ich przestrzegać. Jeśli granica jest niejasna, możesz uzgodnić, którego poziomu użyć.