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
 








