Úvod do protokolovania Java

1. Prehľad

Protokolovanie je účinnou pomôckou na pochopenie a ladenie chodu programu za behu. Protokoly zachytávajú a uchovávajú dôležité údaje a sprístupňujú ich kedykoľvek na analýzu.

Tento článok pojednáva o najpopulárnejších rámcoch java na protokolovanie Log4j 2 a Logback spolu s ich predchodcom Log4j a stručne sa týka SLF4J, fasády protokolovania, ktorá poskytuje spoločné rozhranie pre rôzne rámce protokolovania.

2. Povolenie protokolovania

Všetky rámce protokolovania, o ktorých sa hovorí v článku, zdieľajú predstavu protokolovacích nástrojov, príloh a rozložení. Povolenie prihlásenia do projektu sa riadi tromi bežnými krokmi:

  1. Pridávajú sa potrebné knižnice
  2. Konfigurácia
  3. Umiestnenie výpisov z denníka

Nasledujúce časti pojednávajú o krokoch pre každý rámec individuálne.

3. Log4j 2

Log4j 2 je nová a vylepšená verzia protokolového rámca Log4j. Najpútavejším vylepšením je možnosť asynchrónneho protokolovania. Log4j 2 vyžaduje nasledujúce knižnice:

 org.apache.logging.log4j log4j-api 2.6.1 org.apache.logging.log4j log4j-jadro 2.6.1 

Posledná verzia log4j-api nájdete tu a log4j-jadro - tu.

3.1. Konfigurácia

Konfigurácia Log4j 2 je založená na hlavnej konfigurácii log4j.xml spis. Prvá vec, ktorú je potrebné nakonfigurovať, je appender.

Tieto určujú, kam bude smerovaná správa protokolu. Cieľ môže byť konzola, súbor, soket atď.

Log4j 2 má veľa prídavných zariadení na rôzne účely. Viac informácií nájdete na oficiálnych stránkach Log4j 2.

Pozrime sa na jednoduchý príklad konfigurácie:

Môžete nastaviť meno pre každého prihlasovateľa, napríklad použiť meno konzola namiesto stdout.

Všimnite si PatternLayout prvok - určuje, ako má správa vyzerať. V našom príklade je vzor nastavený na základe vzor param, kde % d určuje vzor dátumu, % p - výstup z úrovne protokolu, % m - výstup zaznamenanej správy a - % n - pridá nový symbol riadku. Viac informácií o vzore nájdete na oficiálnej stránke Log4j 2.

Nakoniec - povoliť prihlasovateľa (alebo viac), do ktorých je potrebné pridať časť:

3.2. Prihlásenie do súboru

Niekedy budete musieť použiť prihlásenie do súboru, takže pridáme fout zapisovač do našej konfigurácie:

   % d {rrrr-MM-dd HH: mm: ss}% -5p% m% nw 

The Súbor appender má niekoľko parametrov, ktoré je možné nakonfigurovať:

  • spis - určuje názov súboru protokolu
  • pridať - Predvolená hodnota tohto parametra je pravda, čo znamená, že predvolene a Súbor appender sa pripojí k existujúcemu súboru a nebude ho skrátiť.
  • PatternLayout ktorý bol popísaný v predchádzajúcom príklade.

Aby bolo možné Súbor doplnok, do ktorého ho musíte pridať časť:

3.3. Asynchrónne protokolovanie

Ak chcete, aby bol váš Log4j 2 asynchrónny, musíte do svojho počítača pridať knižnicu disruptorov LMAX pom.xml. LMAX disruptor je bezzámková medzivláknová komunikačná knižnica.

Pridanie disruptora do pom.xml:

 com.lmax disruptor 3.3.4 

Najnovšiu verziu disruptora nájdete tu.

Ak chcete použiť disruptor LMAX, musíte použiť namiesto vo vašej konfigurácii.

Alebo môžete povoliť asynchrónne protokolovanie nastavením vlastnosti systému Log4jContextSelector do org.apache.logging.log4j.core.async.AsyncLoggerContextSelector.

Môžete si samozrejme prečítať viac informácií o konfigurácii asynchrónneho záznamníka Log4j2 a niekoľko výkonnostných diagramov na oficiálnej stránke Log4j2.

3.4. Využitie

Nasleduje jednoduchý príklad, ktorý demonštruje použitie protokolu Log4j na protokolovanie:

import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; verejná trieda Log4jExample {private static Logger logger = LogManager.getLogger (Log4jExample.class); public static void main (String [] args) {logger.debug ("Debug log správa"); logger.info ("Informačná správa protokolu"); logger.error ("Chybová správa z protokolu"); }}

Po spustení aplikácia zaznamená nasledujúce správy do konzoly aj do súboru s názvom baeldung.log:

2016-06-16 17:02:13 INFO Informačná správa protokolu 2016-06-16 17:02:13 CHYBA Chybová správa protokolu

Ak zvýšite úroveň koreňového protokolu na CHYBA:

Výstup bude vyzerať takto:

2016-06-16 17:02:13 CHYBA Chybová správa denníka

Ako vidíte, zmena úrovne protokolu na horný parameter spôsobí, že správy s nižšími úrovňami protokolu sa nebudú tlačiť dodatkom.

Metóda logger.error možno tiež použiť na zaznamenanie výnimky, ku ktorej došlo:

skúste {// Tu je možné hodiť výnimku} catch (Výnimka e) {logger.error ("Chybová správa protokolu", hoditeľná); }

3.5. Konfigurácia úrovne balíka

Povedzme, že musíte zobrazovať správy s úrovňou protokolu TRACE - napríklad z konkrétneho balíka ako napr com.baeldung.log4j2:

logger.trace ("Správa protokolu trasovania");

Pre všetky ostatné balíčky chcete pokračovať v zaznamenávaní iba INFO správ.

Majte na pamäti, že TRACE je nižší ako INFO na úrovni koreňového protokolu, ktorý sme zadali v konfigurácii.

Ak chcete povoliť protokolovanie iba pre jeden z balíkov, musíte predtým pridať nasledujúcu časť tvojmu log4j.xml:

Umožní to prihlásenie pre doménu com.baeldung.log4j balíček a váš výstup bude vyzerať takto:

2016-06-16 17:02:13 TRACE Správa trasovacieho protokolu 2016-06-16 17:02:13 DEBUG Správa protokolu ladenia 2016-06-16 17:02:13 INFO Informačná správa protokolu 2016-06-16 17:02 : 13 CHYBA Chybová správa protokolu

4. Prihlásenie

Logback má byť vylepšenou verziou Log4j, vyvinutou tým istým vývojárom, ktorý vytvoril Log4j.

Logback má tiež oveľa viac funkcií v porovnaní s Log4j, pričom mnohé z nich sú zavedené aj do Log4j 2. Tu je rýchly prehľad všetkých výhod Logbacku na oficiálnych stránkach.

Začnime pridaním nasledujúcej závislosti do súboru pom.xml:

 ch.qos.logback logback-classic 1.1.7 

Táto závislosť prechodne privedie ďalšie dve závislosti, logback-core a slf4j-api. Najnovšiu verziu aplikácie Logback nájdete tu.

4.1. Konfigurácia

Poďme sa teraz pozrieť na príklad konfigurácie Logback:

 # Pripojenie konzoly # Vzor správy protokolu pre konzolového používateľa% d {rrrr-MM-dd HH: mm: ss}% -5p% m% n # Pripojenie súboru baeldung.log false # Vzor správy protokolu pre pridanie súboru% d { rrrr-MM-dd HH: mm: ss}% -5p% m% n # Prepísať úroveň protokolu pre zadaný balík 

Program Logback používa ako rozhranie SLF4J, takže musíte importovať SLF4J Logger a LoggerFactory.

4.2. SLF4J

SLF4J poskytuje spoločné rozhranie a abstrakciu pre väčšinu protokolových rámcov Java. Funguje ako fasáda a poskytuje štandardizované API pre prístup k základným funkciám rámca protokolovania.

Logback používa SLF4J ako natívne API pre svoju funkčnosť. Nasleduje príklad použitia protokolovania Logback:

import org.slf4j.Logger; import org.slf4j.LoggerFactory; verejná trieda Log4jExample {súkromný statický záznamník záznamníka = LoggerFactory.getLogger (Log4jExample.class); public static void main (String [] args) {logger.debug ("Debug log správa"); logger.info ("Informačná správa protokolu"); logger.error ("Chybová správa z protokolu"); }}

Výstup zostane rovnaký ako v predchádzajúcich príkladoch.

5. Log4J

Na záver sa pozrime na ctihodný rámec protokolovania Log4j.

V tomto okamihu je to samozrejme zastarané, ale stojí za to o ňom diskutovať, pretože vytvára základ pre jeho modernejších nástupcov.

Mnoho podrobností o konfigurácii sa zhoduje s tými, o ktorých sa hovorí v časti Log4j 2.

5.1. Konfigurácia

Najskôr musíte do svojich projektov pridať knižnicu Log4j pom.xml:

 log4j log4j 1.2.17 

Tu by ste mali byť schopní nájsť najnovšiu verziu aplikácie Log4j.

Pozrime sa na kompletný príklad jednoduchej konfigurácie Log4j iba s jedným pripojovacím členom konzoly:

je otvorená značka celej konfigurácie, ktorá má jednu vlastnosť - ladiť. Určuje, či chcete do protokolov pridať ladiace informácie Log4j.

5.2. Využitie

Po pridaní knižnice a konfigurácie Log4j môžete vo svojom kóde použiť záznamník. Pozrime sa na jednoduchý príklad:

import org.apache.log4j.Logger; verejná trieda Log4jExample {súkromný statický protokolovač Logger = Logger.getLogger (Log4jExample.class); public static void main (String [] args) {logger.debug ("Debug log správa"); logger.info ("Informačná správa protokolu"); logger.error ("Chybová správa z protokolu"); }}

6. Záver

Tento článok ukazuje veľmi jednoduché príklady toho, ako môžete používať rôzne protokoly, ako napríklad Log4j, Log4j2 a Logback. Zahŕňa jednoduché príklady konfigurácie pre všetky spomenuté rámce.

Príklady, ktoré sú súčasťou článku, nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found