Bevezetés a Java naplózásba
1. Áttekintés
A naplózás hatékony segítséget nyújt a program futásidejű viselkedésének megértésében és hibakeresésében. A naplók rögzítik és megőrzik a fontos adatokat, és elemzés céljából bármikor elérhetővé teszik azokat.
Ez a cikk a legnépszerűbb java naplózási keretrendszereket, a Log4j 2-t és a Logback-t, valamint elődjük Log4j-jét tárgyalja, és röviden kitér az SLF4J-ra, egy naplózási homlokzatra, amely közös interfészt biztosít a különböző naplózási keretek számára.
2. Naplózás engedélyezése
A cikkben tárgyalt összes naplózási keret megegyezik a naplózók, a függelékek és az elrendezések fogalmával. A naplózás engedélyezése a projekten belül három közös lépést követ:
- Szükséges könyvtárak hozzáadása
- Konfiguráció
- Napló utasítások elhelyezése
A következő szakaszok külön-külön tárgyalják az egyes keretek lépéseit.
3. Log4j 2
A Log4j 2 a Log4j naplózási keretrendszer új és továbbfejlesztett változata. A legmeggyőzőbb fejlesztés az aszinkron naplózás lehetősége. A Log4j 2 a következő könyvtárakat igényli:
org.apache.logging.log4j log4j-api 2.6.1 org.apache.logging.log4j log4j-core 2.6.1
A legfrissebb verzió log4j-api megtalálhatja itt és log4j-mag - itt.
3.1. Konfiguráció
A Log4j 2 konfigurálása a fő konfiguráción alapul log4j.xml fájl. Az első dolog, amit konfigurálni kell, az az appender.
Ezek határozzák meg a naplóüzenet továbbításának helyét. A cél lehet konzol, fájl, socket stb.
A Log4j 2 számos függelékkel rendelkezik, különböző célokra, további információkat a hivatalos Log4j 2 webhelyen talál.
Vessen egy pillantást egy egyszerű konfigurációs példára:
Beállíthat egy nevet az egyes kiegészítőkhöz, például használhatja a nevet konzol ahelyett stdout.
Figyelje meg a PatternLayout elem - ez határozza meg, hogy az üzenet hogyan nézzen ki. Példánkban a mintát a minta param, hol % d meghatározza a dátummintát, % p - a naplószint kimenete, % m - naplózott üzenet kimenete és % n - új sor szimbólum. További információ a mintáról a Log4j 2 hivatalos oldalán található.
Végül - hogy engedélyezzen egy alkalmazót (vagy több) hozzá kell adnia szakasz:
3.2. Bejelentkezés a fájlba
Előfordul, hogy naplózást kell használnia egy fájlhoz, ezért hozzáadjuk fout logger a konfigurációnkhoz:
% d {éééé-hh-nn óó: pp: ss}% -5p% m% nw
A File Az appender számos beállítható paraméterrel rendelkezik:
- fájl - meghatározza a naplófájl fájlnevét
- mellékel - Ennek a paraméternek az alapértelmezett értéke igaz, vagyis alapértelmezés szerint a File Az appender egy meglévő fájlt csatol, és nem csonkolja le.
- PatternLayout hogy az előző példában leírták.
Annak érdekében, hogy File appender hozzá kell adnia szakasz:
3.3. Aszinkron naplózás
Ha aszinkroná akarja tenni a Log4j 2-t, hozzá kell adnia az LMAX-bontó könyvtárat a könyvtárához pom.xml. Az LMAX disruptor egy zár nélküli szálak közötti kommunikációs könyvtár.
Disruptor hozzáadása a pom.xml fájlhoz:
com.lmax zavaró 3.3.4
A disruptor legújabb verziója itt található.
Ha az LMAX megszakítót szeretné használni, akkor használnia kell ahelyett konfigurációjában.
Vagy engedélyezheti az aszinkron naplózást a rendszer tulajdonságának beállításával Log4jContextSelector nak nek org.apache.logging.log4j.core.async.AsyncLoggerContextSelector.
Természetesen többet tudhat meg a Log4j2 async naplózó konfigurációjáról, és néhány teljesítménydiagramot megnézhet a Log4j2 hivatalos oldalán.
3.4. Használat
Az alábbi egyszerű példa bemutatja a Log4j használatát naplózáshoz:
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; public class Log4jExample {private static Logger logger = LogManager.getLogger (Log4jExample.class); public static void main (String [] args) {logger.debug ("Hibakeresési naplóüzenet"); logger.info ("Info napló üzenet"); logger.error ("Hiba napló üzenet"); }}
A futtatás után az alkalmazás a következő üzeneteket naplózza mind a konzolba, mind a megnevezett fájlba baeldung.log:
2016-06-16 17:02:13 INFO Információs napló üzenet 2016-06-16 17:02:13 HIBA Hiba napló üzenet
Ha a gyökérnapló szintjét emeli HIBA:
A kimenet a következőképpen fog kinézni:
2016-06-16 17:02:13 HIBA Hibanapló üzenet
Mint láthatja, a naplószint felső paraméterre változtatása azt eredményezi, hogy az alacsonyabb naplószintű üzenetek nem kerülnek kinyomtatásra a mellékletekhez.
Módszer naplózó.hiba fel lehet használni egy bekövetkezett kivétel naplózására is:
próbáld {// Itt néhány kivétel dobható} catch (e kivétel) {logger.error ("Error log message", dobható); }
3.5. Csomagszint konfiguráció
Tegyük fel, hogy a TRACE naplószintű üzeneteket kell megjelenítenie - például egy adott csomagból, például com.baeldung.log4j2:
logger.trace ("Nyomkövetési naplóüzenet");
Az összes többi csomag esetében csak az INFO üzenetek naplózását szeretné folytatni.
Ne feledje, hogy a TRACE alacsonyabb, mint a konfigurációban megadott gyökérszint szintű INFO.
Csak a csomagok egyikének naplózásához engedélyezze a következő szakaszt a te log4j.xml:
Lehetővé teszi a naplózást a com.baeldung.log4j csomag és a kimenete a következőképpen fog kinézni:
2016-06-16 17:02:13 TRACE naplóüzenet 2016-06-16 17:02:13 DEBUG hibakeresési naplóüzenet 2016-06-16 17:02:13 INFO Információs naplóüzenet 2016-06-16 17:02 : 13 HIBA Hibanapló üzenet
4. Visszalépés
A Logback a Log4j továbbfejlesztett verziója, amelyet ugyanaz a fejlesztő fejlesztett ki, aki a Log4j-t készítette.
A Logbacknek sokkal több funkciója van a Log4j-hez képest, sokukat a Log4j 2-be is bevezették. Itt röviden áttekintheti a Logback összes előnyét a hivatalos oldalon.
Kezdjük azzal, hogy hozzáadjuk a következő függőséget a pom.xml:
ch.qos.logback logback-classic 1.1.7
Ez a függőség átmenetileg újabb két függőséget, a logback-core és slf4j-api. Ne feledje, hogy a Logback legújabb verziója itt található.
4.1. Konfiguráció
Most nézzünk meg egy Logback konfigurációs példát:
# Konzolos hozzáfűző # Naplóüzenet mintája a konzol-kiegészítőkhöz% d {éééé-HH-NN ÓÓ: mm: ss}% -5p% m% n # File appender baeldung.log hamis # A naplóüzenet mintája a% d fájl hozzáfűzőhöz { éééé-hh-nn HH: mm: ss}% -5p% m% n # A megadott csomag naplószintjének felülírása
A visszalépés az SLF4J-t használja interfészként, ezért importálnia kell az SLF4J-eket Logger és LoggerFactory.
4.2. SLF4J
Az SLF4J közös felületet és absztrakciót biztosít a Java naplózási keretrendszerek nagy részéhez. Homlokzatként működik, és szabványos API-t biztosít a naplózási keretrendszer mögöttes jellemzőinek eléréséhez.
A Visszalépés funkció az SLF4J-t natív API-ként használja. Az alábbiakban bemutatjuk a Visszaállítási naplózást:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Log4jExample {private static Logger logger = LoggerFactory.getLogger (Log4jExample.class); public static void main (String [] args) {logger.debug ("Hibakeresési naplóüzenet"); logger.info ("Info napló üzenet"); logger.error ("Hiba napló üzenet"); }}
A kimenet ugyanaz marad, mint az előző példákban.
5. Log4J
Végül nézzük meg a tiszteletre méltó Log4j naplózási keretrendszert.
Ezen a ponton természetesen elavult, de érdemes megvitatni, mivel ez megalapozza a modernebb utódokat.
A konfiguráció részleteinek nagy része megegyezik a Log4j 2 szakaszban tárgyaltakkal.
5.1. Konfiguráció
Először hozzá kell adnia a Log4j könyvtárat a projektjeihez pom.xml:
log4j log4j 1.2.17
Itt meg kell találnia a Log4j legújabb verzióját.
Vessünk egy pillantást az egyszerű Log4j konfiguráció teljes példájára, amely csak egy konzolos alkalmazással rendelkezik:
a teljes konfiguráció nyitott címkéje, amelynek egyetlen tulajdonsága van - hibakeresés. Meghatározza, hogy hozzá kívánja-e adni a Log4j hibakeresési információkat a naplókhoz.
5.2. Használat
Miután hozzáadta a Log4j könyvtárat és konfigurációt, használhatja a naplózót a kódban. Vessünk egy pillantást egy egyszerű példára:
import org.apache.log4j.Logger; public class Log4jExample {private static Logger logger = Logger.getLogger (Log4jExample.class); public static void main (String [] args) {logger.debug ("Hibakeresési naplóüzenet"); logger.info ("Info napló üzenet"); logger.error ("Hiba napló üzenet"); }}
6. Következtetés
Ez a cikk nagyon egyszerű példákat mutat be a különböző naplózási keretrendszerek, például a Log4j, a Log4j2 és a Logback használatára. Egyszerű konfigurációs példákat tartalmaz az összes említett keretrendszerhez.
A cikkhez mellékelt példák a GitHub oldalon találhatók.