Protokolovanie Java

V tomto tutoriále sa pomocou príkladov dozvieme o protokolovaní Java a jeho rôznych komponentoch.

Java nám umožňuje vytvárať a zachytávať správy a súbory protokolu prostredníctvom procesu prihlásenia.

V Jave vyžaduje protokolovanie rámce a API. Java má v java.util.loggingbalíčku zabudovaný rámec na protokolovanie .

Na účely protokolovania môžeme tiež použiť rámce tretích strán, ako sú Log4j, Logback a mnohé ďalšie.

Komponenty protokolovania Java

Obrázok nižšie predstavuje základné komponenty a tok riadenia rozhrania Java Logging API ( java.util.logging).

Protokolovanie Java

1. Logger

LoggerTrieda poskytuje metódy pre protokolovanie. Môžeme vytvoriť inštanciu objektov z Loggertriedy a zavolať jej metódy na účely prihlásenia.

Zoberme si príklad.

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

getLogger()Spôsob podľa Loggertriedy sa používa na nájdenie alebo vytvoriť novú Logger. Reťazcový argument definuje názov protokolovacieho zariadenia.

Tu sa vytvorí nový Loggerobjekt alebo sa vráti existujúci Loggers rovnakým názvom.

Konvenciou je definovať Loggerpo použití aktuálnej triedy class.getName().

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

Poznámka: Táto metóda hodí, NullPointerExceptionak je zadaný názov null.

Každá z nich Loggermá úroveň, ktorá určuje dôležitosť správy protokolu. Existuje 7 základných úrovní denníka:

Úroveň denníka (v zostupnom poradí) Použite
ZÁVAŽNE vážne zlyhanie
VÝSTRAHA varovná správa, potenciálny problém
INFO všeobecné informácie o behu
KONFIG informácie o konfigurácii
FINE všeobecné informácie pre vývojárov (sledovanie správ)
FINERNEJŠIE podrobné informácie pre vývojárov (sledovanie správ)
NAJLEPŠIE veľmi podrobné informácie pre vývojárov (sledovanie správ)
VYPNUTÉ vypnúť protokolovanie pre všetky úrovne (nič nezachytiť)
VŠETKY zapnúť logovanie na všetkých úrovniach (zachytiť všetko)

Každá úroveň protokolu má celočíselnú hodnotu, ktorá určuje ich závažnosť, okrem dvoch špeciálnych úrovní protokolu OFFa ALL.

Protokolovanie správy

V predvolenom nastavení sa vždy zaznamenávajú najvyššie tri úrovne denníka. Na nastavenie inej úrovne môžeme použiť nasledujúci kód:

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

V tomto príklade FINEje nastavená na zaznamenávanie iba úroveň a úrovne nad ňou. Všetky ostatné správy denníka sú zrušené.

Teraz na prihlásenie správy použijeme log()metódu.

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

Existujú skratkové metódy prihlásenia na požadované úrovne.

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

Všetky požiadavky na denník, ktoré prešli nastavenou úrovňou denníka, sa potom preposielajú do LogRecordu .

Poznámka: Ak je úroveň protokolovača nastavená na null, jeho úroveň sa zdedí od nadradeného objektu atď. V strome.

2. Filtre

Filter (ak je k dispozícii) určuje, či sa má protokol LogRecord posielať ďalej alebo nie. Ako už názov napovedá, filtruje správy protokolu podľa konkrétnych kritérií.

Záznam LogRecord sa odovzdáva zo záznamníka do obslužného programu denníkov a z obslužného programu denníkov do externých systémov, ak splní zadané kritériá.

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

3. Obsluha (dodatok)

Obslužný program denníka alebo dodatky prijmú LogRecord a exportujú ho do rôznych cieľov.

Java SE poskytuje 5 vstavaných obslužných programov:

Manipulanti Použite
StreamHandler píše do OutputStream
ConsoleHandler píše do konzoly
FileHandler zapisuje do spisu
SocketHandler zapisuje na vzdialené porty TCP
MemoryHandler zapisuje do pamäti

Obslužná rutina môže odovzdať protokol LogRecord do filtra, aby opäť určila, či je možné ho poslať ďalej do externých systémov alebo nie.

Ak chcete pridať nový obslužný program, použijeme nasledujúci kód:

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

Na odstránenie obslužnej rutiny používame nasledujúci kód:

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

Záznamník môže mať viac obslužných programov. Na získanie všetkých obslužných programov používame nasledujúci kód:

 Handler() handlers = logger.getHandlers(); 

4. Formátory

Obsluha môže tiež použiť Formatter na naformátovanie objektu LogRecord na reťazec pred jeho exportom do externých systémov.

Java SE má dva zabudované formátory :

Formátovače Použite
SimpleFormatter formátuje LogRecord na reťazec
XMLFormatter formátuje formát LogRecord do XML

Na formátovanie obslužnej rutiny môžeme použiť nasledujúci kód:

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

LogManager

Objekt LogManager sleduje informácie o globálnom protokolovaní. Číta a udržiava konfiguráciu protokolovania a inštancie protokolovacieho zariadenia.

Správca protokolov je jediný, čo znamená, že je inštancovaná iba jeho jedna inštancia.

Na získanie inštancie správcu protokolov používame nasledujúci kód:

 LogManager manager = new LogManager(); 

Výhody ťažby dreva

Tu sú niektoré z výhod prihlásenia v Jave.

  • pomáha pri sledovaní priebehu programu
  • pomáha zachytiť všetky chyby, ktoré sa môžu vyskytnúť
  • poskytuje podporu pre diagnostiku problémov a ladenie

Zaujímavé články...