Rejestrowanie Java

W tym samouczku za pomocą przykładów nauczymy się o protokołowaniu Java i jego różnych składnikach.

Java umożliwia nam tworzenie i przechwytywanie komunikatów i plików dziennika w trakcie procesu logowania.

W Javie logowanie wymaga ram i interfejsów API. Java ma wbudowaną strukturę rejestrowania w java.util.loggingpakiecie.

Do celów logowania możemy również korzystać z platform innych firm, takich jak Log4j, Logback i wiele innych.

Składniki dziennika Java

Poniższy rysunek przedstawia podstawowe komponenty i przepływ kontroli interfejsu API Java Logging ( java.util.logging).

Rejestrowanie Java

1. Logger

LoggerKlasa udostępnia metody logowania. Możemy tworzyć instancje obiektów z Loggerklasy i wywoływać jej metody do celów logowania.

Weźmy przykład.

 Logger logger = Logger.getLogger("newLoggerName"); 

getLogger()Metoda z Loggerklasy służy do znalezienia lub utworzyć nową Logger. Argument łańcuchowy określa nazwę programu rejestrującego.

Tutaj tworzy to nowy Loggerobiekt lub zwraca istniejący Loggero tej samej nazwie.

Konwencją jest definiowanie a Loggerpo bieżącej klasie przy użyciu class.getName().

 Logger logger = Logger.getLogger(MyClass.class.getName()); 

Uwaga: ta metoda spowoduje zgłoszenie, NullPointerExceptionjeśli przekazana nazwa to null.

Każdy Loggerma poziom, który określa ważność komunikatu dziennika. Istnieje 7 podstawowych poziomów dziennika:

Poziom dziennika (malejąco) Posługiwać się
CIĘŻKI: SILNY poważna awaria
OSTRZEŻENIE komunikat ostrzegawczy, potencjalny problem
INFO ogólne informacje o czasie wykonywania
KONFIG informacje o konfiguracji
W PORZĄDKU ogólne informacje dla deweloperów (komunikaty śledzenia)
FINERY szczegółowe informacje dla deweloperów (komunikaty śledzenia)
NAJLEPSZA bardzo szczegółowe informacje dla deweloperów (komunikaty śledzenia)
POZA wyłącz logowanie na wszystkich poziomach (nic nie rejestruj)
WSZYSTKO włącz logowanie na wszystkich poziomach (przechwytuj wszystko)

Każdy poziom rejestrowania ma wartość całkowitą, która określa jego wagę, z wyjątkiem dwóch specjalnych poziomów rejestrowania OFFi ALL.

Rejestrowanie wiadomości

Domyślnie zawsze rejestrowane są trzy najwyższe poziomy dziennika. Aby ustawić inny poziom, możemy użyć następującego kodu:

 logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE); 

W tym przykładzie FINErejestrowane są tylko poziomy i poziomy powyżej niego. Wszystkie inne komunikaty dziennika są usuwane.

Teraz, aby zarejestrować wiadomość, używamy log()metody.

 logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); 

Istnieją skrócone metody rejestrowania na pożądanych poziomach.

 logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); 

Wszystkie żądania dziennika, które przeszły ustawiony poziom dziennika, są następnie przekazywane do LogRecord .

Uwaga: Jeśli poziom programu rejestrującego jest ustawiony na null, jego poziom jest dziedziczony po jego rodzicu i tak dalej w górę drzewa.

2. Filtry

Filtr (jeśli jest obecny) określa, czy LogRecord powinien być przekazywany, czy nie. Jak sama nazwa wskazuje, filtruje komunikaty dziennika według określonych kryteriów.

LogRecord przepuszcza tylko z rejestratorem do obsługi dziennika oraz obsługi dziennika do systemów zewnętrznych, jeśli przechodzi określone kryteria.

 // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); 

3. Programy obsługujące (dołączające)

Program obsługi dziennika lub programy dołączające otrzymują LogRecord i eksportują go do różnych celów.

Java SE udostępnia 5 wbudowanych programów obsługi:

Handlery Posługiwać się
StreamHandler pisze do OutputStream
ConsoleHandler pisze do konsoli
FileHandler zapisuje do pliku
SocketHandler zapisuje do zdalnych portów TCP
MemoryHandler pisze do pamięci

Procedura obsługi może przekazać LogRecord do filtra, aby ponownie określić, czy można go przekazać do systemów zewnętrznych, czy nie.

Aby dodać nową procedurę obsługi, używamy następującego kodu:

 logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); 

Aby usunąć moduł obsługi, używamy następującego kodu:

 logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); 

Rejestrator może mieć wiele programów obsługi. Aby uzyskać wszystkie programy obsługi, używamy następującego kodu:

 Handler() handlers = logger.getHandlers(); 

4. Formaty

Procedura obsługi można również użyć Formatter sformatować LogRecord obiektu na ciąg znaków przed eksportując go do systemów zewnętrznych.

Java SE ma dwa wbudowane elementy formatujące :

Formatters Posługiwać się
SimpleFormatter formatuje LogRecord na ciąg
XMLFormatter formatuje LogRecord do postaci XML

Możemy użyć następującego kodu do sformatowania modułu obsługi:

 // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); 

LogManager

Obiekt LogManager śledzi globalne informacje rejestrowania. Odczytuje i utrzymuje konfigurację rejestrowania i wystąpienia programu rejestrującego.

Menedżer dziennika jest singletonem, co oznacza, że ​​tworzona jest tylko jedna jego instancja.

Aby uzyskać instancję menedżera dziennika, używamy następującego kodu:

 LogManager manager = new LogManager(); 

Zalety logowania

Oto kilka zalet logowania w Javie.

  • pomaga w monitorowaniu przebiegu programu
  • pomaga w wychwytywaniu wszelkich błędów, które mogą wystąpić
  • zapewnia obsługę diagnostyki problemów i debugowania

Interesujące artykuły...