Mi az a naplózó a Java-ban, és miért használja?



Ez a cikk a Java naplózóról átfogó útmutató a Java naplózási API-ról, amelyet projektek létrehozása során naplózásra használnak.

A naplózás fontos funkció, amelyet a fejlesztőknek figyelembe kell venniük a hibák visszakereséséhez. , mivel ez az egyik legnépszerűbb programozási nyelv, testreszabható megközelítéssel rendelkezik a naplózáshoz egy alapvető naplózási API biztosításával. Tehát ebben a cikkben a Java-ban a Loggerről fogom megvitatni, hogyan használhatja ezt a funkciót a bővíthető naplózás engedélyezéséhez a Java-ban.

A cikk a következő témákkal foglalkozik:





    1. Naplózási igény
    2. Komponensek naplózása
    3. Mi az a Logger?
    4. Appender vagy Handlers
    5. Elrendezés vagy formázók

Előtte mélyen belemerülünk a Java-ba történő naplózásba, értsük meg a naplózás szükségességét.

Naplózási igény

Az alkalmazások építése során gyakran találkozunk hibákkal, amelyeket hibakeresni kell. Tehát a naplók segítségével a hibák és a szokatlan körülmények nyilvántartásával könnyen információt szerezhetünk arról, hogy mi történik az alkalmazásban. Most felmerülhet benne, hogy miért ne használná a System.out.print () utasítást . Nos, ezekkel az állításokkal az a probléma, hogy a naplóüzeneteket csak a konzolra nyomtatják ki. Tehát, ha bezárja a konzolt, automatikusan minden napló elvész. Ezért a naplók nem lesznek állandóan tárolva, és egyenként jelennek meg, mivel egyszálú környezetről van szó.



Az ilyen problémák elkerülése érdekében a Java segítségével egyszerűbb a naplózás aAz API-n keresztül ajava.util.loggingcsomagot, és aorg.apache.log4j. *csomag.

Komponensek naplózása

A Java naplózási összetevők segítenek a fejlesztőnek naplók létrehozásában, a naplók továbbításában a megfelelő rendeltetési helyre és a megfelelő formátum fenntartásában. A következő három alkotóelem:

  • Favágók - Felelős a naplórekordok elfogásáért és továbbításáért a megfelelő Appendernek.
  • Függelékek vagy kezelők - Ők felelősek a naplóesemények célállomáson történő rögzítéséért. Az Appenders az elrendezés segítségével formázza az eseményeket, mielőtt kimeneteket küldene.
  • Elrendezések vagy formázók - Felelõ meghatározni, hogy az adatok hogyan néznek ki, amikor megjelennek a naplóbejegyzésben.

Az alábbi képen megtekintheti a három alkatrész működését:



Naplózási összetevők - Naplózó Java-ban - Edureka

Amikor egy alkalmazás naplózási hívást indít, a Naplózó összetevő rögzíti az eseményt egy LogRecord-ban, és továbbítja azt a megfelelő Appendernek. Ezután az elrendezés segítségével formázta a rekordot a kívánt formátumnak megfelelően. Ezen kívül egynél több Szűrőt is megadhat, hogy mely Függelékeket kell használni az eseményekhez.

Most pedig értsük meg, mi az a naplózó a Java-ban.

Mi a Logger a Java-ban?

A Java-ban lévő naplók olyan objektumok, amelyek naplóeseményeket váltanak ki. Létrehozásra és meghívásra kerülnek az alkalmazás kódjában, ahol naplóeseményeket generálnak, mielőtt továbbítanák őket a következő összetevőhöz, amely egy Appender. Egy osztályban több naplózót is használhat arra, hogy válaszoljon a különféle eseményekre, vagy használhatja a Naplózókat hierarchiában. Általában a hierarchikus, ponttal elválasztott névtér használatával nevezik őket. Ezenkívül az összes Naplózó névnek a naplózott összetevő osztályán vagy csomagnevén kell alapulnia.

Ettől eltekintve minden naplózó nyomon követi a legközelebbi meglévő őst a Naplók névtérrel és egy „Szint” is társul hozzá. Nos, a naplózókat a cikk második részében fogom megvitatni, de előtte hadd mutassam meg, hogyan lehet naplózót létrehozni a Java-ban.

Hozzon létre új naplózót

Az új Logger létrehozása a Java-ban meglehetősen egyszerű. Használnia kellLogger.getLogger ()módszer. AzgetLogger () azonosítja a Naplózó nevét, és a karakterláncot veszi paraméterként. Tehát, ha már létezik naplózó, akkor az a naplózó visszatér, különben új naplózó jön létre.

Szintaxis:

static Logger logger = Logger.getLogger (SampleClass.class.getName ())

Itt a SampleClass az osztály neve, amelyre a Naplózó objektumot kapjuk.

Példa:

mi a tábla paramétere
public class Ügyfél {private static final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

Most, hogy elmondtam, hogyan hozhat létre naplózót a Java-ban, nézzük meg a naplózásban elérhető különböző szinteket.

Naplószintek

A naplószintek a naplók kategorizálására szolgálnak súlyosságuk vagy az alkalmazás stabilitására gyakorolt ​​hatás alapján. Azorg.apache.log4j. *csomag és ajava.util.loggingmindkettő különböző szintű naplózást biztosít. Vessünk egy-egy pillantást mindegyikre.

org.apache.log4j. *A csomag a következő szinteket biztosítja csökkenő sorrendben:

  • HALÁLOS
  • HIBA
  • FIGYELMEZTET
  • INFO
  • HIBÁK

java.util.loggingA csomag a következő szinteket biztosítja csökkenő sorrendben:

  • SÚLYOS (LEGMAGASABB SZINT)
  • FIGYELEM
  • INFO
  • CONFIG
  • BÍRSÁG
  • FINER
  • LEGJOBB (legalacsonyabb szint)

Ettől eltekintve a fenti csomag két további szintet is tartalmazMINDENésKIaz összes üzenet naplózására és a naplózás letiltására szolgál.

Példa a Java-ba történő naplózásra aorg.apache.log4j. *csomag:

import org.apache.log4j.Logger public class Customer {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('FIGYELEM') ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Végleges kimenet')}}

Tehát ha a kimenetegyökér naplózó WARN-szintű log4j.tulajdonságok fájlt, akkor az összes, a WARN-nál nagyobb prioritású hibaüzenetet az alábbiak szerint nyomtatja ki:

A szintet a setLevel () metódus segítségével is beállíthatjajava.util.loggingcsomag az alábbiak szerint:

logger.setLevel (Level.WARNING)

Példa a Java-ba történő naplózásra ajava.util.loggingcsomag:

csomag edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * class EdurekaLogger {private final static Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) public void sampleLog () {LOGGER.log (Level.WARNING, 'Welcome to Edureka!')}} public class Customer {public static void main (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Level.WARNING, 'Sziasztok! Üdvözlet az Edureka-tól')}

A naplózás engedélyezése az alkalmazásban aorg.apache.log4j. *csomag vagy ajava.util.loggingcsomagot, meg kell adnia a tulajdonságfájlt. Ebben a cikkben a Java naplózójáról folytassuk a kettő tulajdonságfájljának megvitatását.

A Log4j és a Java Util csomag tulajdonságfájlja

Log4j Tulajdonságok fájl mintája:

# Engedélyezze a gyökérnaplózó opciót log4j.rootLogger = INFO, fájl, stdout # Függelékeket csatoljon a log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender fájl nyomtatásához. file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm : ss}% -5p% c {1}:% L -% m% n # Függelékeket csatol a konzolra történő nyomtatáshoz log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {éééé-hh-nn HH: mm: ss}% -5p% c {1}:% L -% m% n
  • A Log4j tulajdonságok fájl a projekt src mappájában jön létre.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Kinyomtatja az összes naplót egy fájlban
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Az összes napló kinyomtatása a konzolban
  • log4j.appender.file.File = D: loglogging.log -> Megadja a naplófájl helyét
  • log4j.appender.file.MaxFileSize = 10MB -> A naplófájl maximális mérete 10MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Korlátozza a biztonsági mentési fájlok számát 5-re
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Megadja azt a mintát, amelyben a naplók a naplófájlba nyomtatnak.
  • log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Beállítja az alapértelmezett konverziós mintát.

Minta Java Util csomag tulajdonságai fájl

handlerek = java.util.logging.ConsoleHandler .level = FIGYELMEZTETÉS # A kimenet az alapértelmezett java.util.logging könyvtárban lesz tárolva.% H / java% u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # A naplók szintje FIGYELMEZTETÉSRE és annál magasabbra lesz korlátozva. java.util.logging.ConsoleHandler.level = FIGYELMEZTETÉS java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Itt,

__magában)
  • java.util.logging.FileHandler.pattern =% h / java% u.log -> A naplófájlokC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->Az a maximális összeg, amelyet a naplózó bájtban bármely fájlba ír.
  • java.util.logging.FileHandler.count = 1 -> Megadja a kimeneti fájlok számát
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Megemlíti a formázáshoz használt formázót. Itt XML formázót használunk.
  • java.util.logging.ConsoleHandler.level = FIGYELEM -> Az alapértelmezett naplószintet WARNING értékre állítja
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->Megadja aFormázóhogy mindenki használhassaConsoleHandler’S. Itt a SimpleFormatter-t használják.

Események naplózása

Az események bejelentkezéséhez , meg kell győződnie arról, hogy hozzárendelt egy szintet az események egyszerű reszeléséhez. Szint hozzárendeléséhez és egy üzenet megemlítéséhez az alábbi módszereket használhatja:

1. módszer:

logger.log (Level.INFO, „Üzenet megjelenítése”)
Itt a szint INFO, a nyomtatandó üzenet pedig 'Display Message'.

2. módszer:

logger.info (“Üzenet megjelenítése”)

Annak érdekében, hogy a Java naplózó csak az INFO szinten vagy annál magasabb eseményeket naplózza, használhatja a setLevel () fent tárgyalt módszer.

Most, hogy megbeszéltem a Logger használatát a Java-ban, beszéljük meg a Log4j architektúra következő összetevőjét, azaz az Appenders-t.

Appender vagy Handlers

Az Appender vagy a Handlers felelős a naplóesemények célállomáson történő rögzítéséért. Minden naplózó hozzáférhet több kezelőhöz, és megkapja a naplóüzenetet a naplózótól. Ezután a Függelékek a Formázók vagy az Elrendezések segítségével formázzák az eseményeket, és elküldik őket a megfelelő rendeltetési helyre.

Az Appender kikapcsolható a setLevel (Level.OFF) módszerrel. A két legszínvonalasabb kezelő ajava.util.loggingcsomagok a következők:

  • FileHandler: Írja a naplóüzenetet fájlba
  • ConsoleHandler: Írja a naplóüzenetet a konzolra

Az Ön jobb megértése érdekében néhány tulajdonságot ismertettem a tulajdonságok részben.

Elrendezés vagy formázók

A Formatters elrendezés az adatok formázására és konvertálására szolgál egy naplóeseményben.A naplózási keretek HTML, XML, Syslog, JSON, sima szöveg és egyéb naplók elrendezését biztosítják.

  1. SimpleFormatter : Szöveges üzeneteket generál alapvető információkkal.
  2. XMLFormatter : XML üzenetet generál a naplóhoz

A jobb megértése érdekében elmagyaráztam néhány elrendezést a tulajdonságok részben.Ezzel eljutottunk ennek a blognak a „Logger in Java” témájához. Remélem, srácok tisztában vannak azzal, amit megtanítottak nektek ebben a cikkben.

Nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát olyan hallgatók és szakemberek számára tervezték, akik Java fejlesztők szeretnének lenni. A tanfolyamot úgy tervezték, hogy előrelépést nyújtson a Java programozásban, és kiképezzen mind az alapvető, mind a fejlett Java koncepciókra, valamint a különböző Java keretrendszerekkel, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a „Logger in Java” blog megjegyzés rovatában, és amint lehetséges, kapcsolatba lépünk Önnel.