Ú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:
- Pridávajú sa potrebné knižnice
- Konfigurácia
- 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.