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:

  1. Szükséges könyvtárak hozzáadása
  2. Konfiguráció
  3. 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.