Java naplózás

Ebben az oktatóanyagban példák segítségével megismerhetjük a Java Naplózást és annak különféle összetevőit.

A Java lehetővé teszi számunkra a naplóüzenetek és fájlok létrehozását és rögzítését a naplózási folyamat során.

A Java-ban a naplózáshoz keretrendszerre és API-ra van szükség. A Java beépített naplózási kerettel rendelkezik a java.util.loggingcsomagban.

Naplózási célokra használhatunk harmadik féltől származó kereteket is, például a Log4j, a Logback és még sok mást.

Java naplózó összetevők

Az alábbi ábra a Java Naplózás API ( java.util.logging) alapvető összetevőit és vezérlési folyamatát mutatja be .

Java naplózás

1. Naplózó

Az Loggerosztály módszereket kínál a naplózáshoz. Példányosíthatunk objektumokat az Loggerosztályból, és naplózási célból meghívhatjuk annak metódusait.

Vegyünk egy példát.

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

Az osztály getLogger()metódusával Loggerúj kereshető vagy létrehozható Logger. A string argumentum meghatározza a naplózó nevét.

Itt ez létrehoz egy új Loggerobjektumot, vagy visszaad egy meglévőt Loggerugyanazzal a névvel.

Megállapodás az a meghatározása Loggeraz aktuális osztály után a használatával class.getName().

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

Megjegyzés: Ez a módszer eldobja, NullPointerExceptionha az átadott név az null.

Mindegyiknek Loggervan egy szintje, amely meghatározza a naplóüzenet fontosságát. 7 alapvető naplószint létezik:

Naplószint (csökkenő sorrendben) Használat
SZIGORÚ súlyos kudarc
FIGYELEM figyelmeztető üzenet, potenciális probléma
INFO általános futásidejű információk
CONFIG konfigurációs információk
BÍRSÁG általános fejlesztői információk (üzenetek nyomon követése)
FINER részletes fejlesztői információk (nyomkövető üzenetek)
LEGJOBB rendkívül részletes fejlesztői információk (üzenetek nyomon követése)
KI kikapcsolja a naplózást minden szinten (semmit sem rögzít)
MINDEN kapcsolja be a naplózást minden szinten (mindent rögzítsen)

Minden naplószintnek van egy egész értéke, amely meghatározza a súlyosságukat, kivéve két speciális naplószintet OFFés ALL.

Az üzenet naplózása

Alapértelmezés szerint a felső három naplószint mindig naplózásra kerül. Másik szint beállításához a következő kódot használhatjuk:

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

Ebben a példában csak a szintet FINEés a felette lévő szinteket állítják be naplózásra. Az összes többi naplóüzenet elvetésre kerül.

Most egy üzenet naplózásához a log()módszert használjuk .

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

Rövidített módszerek léteznek a kívánt szintű naplózáshoz.

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

Az összes napló kérelem, amely túllépte a beállított naplószintet, továbbításra kerül a LogRecord számára .

Megjegyzés: Ha egy naplózó szintje értéke van null, akkor annak szintjét örökli a szülőtől, és így tovább a fán.

2. Szűrők

Egy szűrő (ha van) meghatározza, hogy a LogRecord továbbításra kerüljön- e vagy sem. Ahogy a neve is sugallja, a naplóüzeneteket meghatározott kritériumok szerint szűri.

A naplóíró csak akkor továbbítja a naplózót a naplókezelőhöz, a naplókezelőtől pedig a külső rendszerekhez, ha az megfelel a megadott feltételeknek.

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

3. Kezelők (függelékek)

A naplókezelő vagy a függelékek megkapják a LogRecordot, és különféle célokba exportálják.

A Java SE 5 beépített kezelőt kínál:

Kezelők Használat
StreamHandler ír egy OutputStream
ConsoleHandler ír a konzolra
FileHandler fájlba ír
SocketHandler ír távoli TCP portokra
MemoryHandler emlékezetbe ír

A kezelő átadhatja a LogRecord- ot egy szűrőnek, hogy újra megállapítsa, továbbítható-e külső rendszerekre.

Új kezelő hozzáadásához a következő kódot használjuk:

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

A kezelő eltávolításához a következő kódot használjuk:

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

Egy naplózónak több kezelője lehet. Az összes kezelő megszerzéséhez a következő kódot használjuk:

 Handler() handlers = logger.getHandlers(); 

4. Formázók

A kezelő a Formatter segítségével is formázhatja a LogRecord objektumot karakterláncokká, mielőtt külső rendszerbe exportálná.

A Java SE két beépített formázóval rendelkezik :

Formázók Használat
SimpleFormatter formázza a LogRecord karakterláncot
XMLFormatter a LogRecord formátumot XML formátumra formázza

A kezelő formázásához a következő kódot használhatjuk:

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

LogManager

A LogManager objektum nyomon követi a globális naplózási információkat. Beolvassa és karbantartja a naplózási konfigurációt és a naplózó példányokat.

A naplókezelő szingulett, ami azt jelenti, hogy csak egy példánya példányos.

A naplókezelő példány megszerzéséhez a következő kódot használjuk:

 LogManager manager = new LogManager(); 

A fakitermelés előnyei

Íme néhány előny a naplózásnak a Java-ban.

  • segít a program folyamatának nyomon követésében
  • segít a felmerülő hibák rögzítésében
  • támogatást nyújt a probléma diagnosztizálásához és a hibakereséshez

érdekes cikkek...