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.logging
csomagban.
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 .

1. Naplózó
Az Logger
osztály módszereket kínál a naplózáshoz. Példányosíthatunk objektumokat az Logger
osztá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 Logger
objektumot, vagy visszaad egy meglévőt Logger
ugyanazzal a névvel.
Megállapodás az a meghatározása Logger
az 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, NullPointerException
ha az átadott név az null
.
Mindegyiknek Logger
van 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