Čo je logger v Jave a prečo ho používate?



Tento článok o protokole Logger v Jave je komplexným sprievodcom rozhraním Java Loging API používaným na protokolovanie riešení pri vytváraní projektov.

Protokolovanie je dôležitá funkcia, ktorú musia vývojári brať do úvahy pri spätnom sledovaní chýb. , ktorý je jedným z najpopulárnejších programovacích jazykov, prichádza s prispôsobiteľným prístupom k protokolovaniu poskytnutím základného protokolovacieho rozhrania API. Takže v tomto článku o Logger v Jave budem diskutovať o tom, ako môže pomocou tejto funkcie povoliť rozšíriteľné protokolovanie v prostredí Java.

V tomto článku sa budeme venovať nasledujúcim témam:





    1. Potreba prihlasovania
    2. Súčasti protokolovania
    3. Čo je to Logger?
    4. Dodatok alebo manipulanti
    5. Rozloženie alebo formátovače

Predtým, ako sa hlboko ponoríme do prihlásenia v Jave, pochopme potrebu prihlásenia.

Potreba prihlasovania

Pri vytváraní aplikácií často čelíme chybám, ktoré je potrebné odladiť. Takže pomocou protokolov môžeme ľahko získať informácie o dianí v aplikácii so záznamom chýb a neobvyklých okolností. Teraz by vás mohlo napadnúť, prečo nepoužívať príkaz System.out.print () v . Problém týchto tvrdení je, že správy denníka sa budú tlačiť iba na konzole. Po automatickom zatvorení konzoly sa teda všetky protokoly stratia. Preto sa protokoly nebudú ukladať natrvalo a zobrazujú sa jeden po druhom, pretože ide o prostredie s jedným vláknom.



Aby sa zabránilo takýmto problémom, prihlásenie do Javy je zjednodušené pomocouAPI poskytované prostredníctvomjava.util.logovaniebalíček aorg.apache.log4j. *balíček.

Súčasti protokolovania

Komponenty protokolovania Java pomáhajú vývojárovi vytvárať protokoly, prenášať protokoly na príslušné miesto určenia a udržiavať správny formát. Nasledujú tri komponenty:

  • Drevorubači - Zodpovedný za zaznamenávanie protokolových záznamov a ich zasielanie príslušnému Dodatku.
  • Dodatky alebo manipulátory - Sú zodpovední za zaznamenávanie udalostí protokolu do cieľa. Dodatky pred odoslaním výstupov formátujú udalosti pomocou rozložení.
  • Rozloženia alebo formátovače - Zodpovedný za určenie toho, ako vyzerajú údaje, keď sa objavia v položke protokolu.

Na obrázku nižšie sa dozviete, ako fungujú všetky tri komponenty:



Súbory na zaznamenávanie - Záznamník v Jave - Edureka

Keď aplikácia uskutoční hovor protokolovania, komponent Logger zaznamená udalosť do LogRecord a pošle ju príslušnému Appenderovi. Potom sformátoval záznam pomocou rozloženia podľa požadovaného formátu. Okrem toho môžete tiež použiť viac ako jeden filter na určenie, ktoré prílohy by sa mali používať pre udalosti.

volať odkazom príklad v c ++

Teraz poďme pochopiť, čo je logger v Jave do hĺbky.

Čo je Logger v Jave?

Protokoly v Jave sú objekty, ktoré spúšťajú udalosti protokolu. Sú vytvárané a sú volané v kóde aplikácie, kde generujú udalosti protokolu pred ich odoslaním ďalšiemu komponentu, ktorým je Appender. Môžete použiť viac záznamníkov v jednej triede na reagovanie na rôzne udalosti alebo použiť záznamníky v hierarchii. Obvykle sa pomenovávajú pomocou hierarchického menného priestoru oddeleného bodkami. Všetky názvy Loggeru musia tiež vychádzať z triedy alebo názvu balíka prihláseného komponentu.

Okrem toho každý záznamník sleduje najbližšieho existujúceho predka v Záznamy namespace a je s ním spojený aj „Level“. O Loggeroch sa budem diskutovať v druhej časti tohto článku, ale predtým mi ukážem, ako vytvoriť Logger v Jave.

Vytvorte nový záznamník

Proces vytvárania nového Loggeru v Jave je dosť jednoduchý. Musíte použiťLogger.getLogger ()metóda. ThegetLogger () identifikuje meno záznamníka a ako parameter použije reťazec. Pokiaľ teda Logger už existuje, potom sa tento Logger vráti, inak sa vytvorí nový Logger.

Syntax:

statický záznamník záznamov = Logger.getLogger (SampleClass.class.getName ())

Tu je SampleClass názov triedy, pre ktorú dostávame objekt Logger.

Príklad:

public class Customer {private static final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

Teraz, keď som vám povedal, ako vytvoriť záznamník v Jave, pozrime sa na rôzne úrovne dostupné v protokolovaní.

Úrovne denníka

Úrovne protokolov sa používajú na kategorizáciu protokolov podľa ich závažnosti alebo vplyvu na stabilitu aplikácie. Theorg.apache.log4j. *balíček ajava.util.logovanieobe poskytujú rôzne úrovne protokolovania. Pozrime sa na každú z nich jednu po druhej.

org.apache.log4j. *balík poskytuje nasledujúce úrovne v zostupnom poradí:

c ++ funkcia triedenia
  • FATÁLNE
  • CHYBA
  • POZOR
  • INFO
  • DEBUG

java.util.logovaniebalík poskytuje nasledujúce úrovne v zostupnom poradí:

  • ZÁVAŽNÉ (NAJVYŠŠIA ÚROVEŇ)
  • VÝSTRAHA
  • INFO
  • KONFIG
  • FINE
  • FINERNEJŠIE
  • NAJLEPŠIE (NAJNIŽŠIA ÚROVEŇ)

Okrem toho vyššie uvedený balík poskytuje aj dve ďalšie úrovneVŠETKYaVYPNUTÉslúži na prihlásenie všetkých správ a na deaktiváciu prihlasovania.

Príklad prihlásenia v Jave pomocouorg.apache.log4j. *balenie:

import org.apache.log4j.Logger verejná trieda Zákazník {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('WARNING' ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Konečný výstup')}}

Takže ak je váš výstuproot logger na úrovni WARN v našom log4j.properties súbor, potom sa všetky chybové správy s vyššou prioritou ako WARN vytlačia takto:

Úroveň môžete nastaviť aj pomocou metódy setLevel () z aplikáciejava.util.logovaniebalík ako je uvedené nižšie:

logger.setLevel (Level.WARNING)

Príklad prihlásenia v Jave pomocoujava.util.logovaniebalenie:

balík 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, 'Ahoj! Vitajte od spoločnosti Edureka')}}

Ak chcete povoliť prihlásenie do aplikácie pomocouorg.apache.log4j. *balíček alebojava.util.logovaniebalíka, musíte nakonfigurovať súbor vlastností. Ďalej v tomto článku o Logger v Jave si poďme predstaviť súbor vlastností oboch.

Súbor vlastností balíka Log4j a Java Util Package

Vzorový súbor vlastností Log4j:

# Povoliť voľbu koreňového protokolovača log4j.rootLogger = INFO, súbor, štandardný výstup # Pripojte dodatky k tlačenému súboru log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender. file.MaxFileSize = 10 MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {rrrr-mm-dd H: : ss}% -5p% c {1}:% L -% m% n # Pripojte dodatky na tlač na konzole 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 {rrrr-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n
  • Súbor vlastností Log4j sa vytvára v priečinku src projektu.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Vypíše všetky protokoly do súboru
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Vypíše všetky protokoly v konzole
  • log4j.appender.file.File = D: loglogging.log -> Určuje umiestnenie súboru protokolu
  • log4j.appender.file.MaxFileSize = 10 MB -> Maximálna veľkosť logovacieho súboru do 10 MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Obmedzuje počet záložných súborov na 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Určuje vzor, ​​v ktorom sa protokoly vytlačia do súboru denníka.
  • log4j.appender.file.layout.ConversionPattern =% d {rrrr-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Nastaví predvolený vzor prevodu.

Ukážka Súbor vlastností balíka Java Util

handlers = java.util.logging.ConsoleHandler .level = UPOZORNENIE # Výstup bude uložený v predvolenom adresári java.util.logging.FileHandler.pattern =% 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 # Úroveň protokolov bude obmedzená na UPOZORNENIE a vyššie. java.util.logging.ConsoleHandler.level = UPOZORNENIE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Tu,

  • java.util.logging.FileHandler.pattern =% h / java% u.log -> súbory protokolu by boli zapísané doC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50 000 ->Maximálne množstvo, ktoré záznamník zapíše do ľubovoľného jedného súboru v bajtoch.
  • java.util.logging.FileHandler.count = 1 -> Určuje počet výstupných súborov
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Uvádza formátovač použitý na formátovanie. Tu sa používa formátovač XML.
  • java.util.logging.ConsoleHandler.level = VAROVANIE -> Nastaví predvolenú úroveň denníka na VAROVANIE
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->UrčujeFormátovačpoužívať všetciConsoleHandler‘S. Tu sa používa SimpleFormatter.

Protokolovanie udalostí

Na prihlásenie udalostí , musíte sa ubezpečiť, že ste priradili úroveň, ktorá vám umožní ľahké vyplnenie udalostí. Ak chcete priradiť úroveň a spomenúť správu, môžete použiť nasledujúce spôsoby:

Metóda 1:

logger.log (Level.INFO, „Zobraziť správu“)
Na tejto úrovni je úroveň INFO a správa, ktorá sa má vytlačiť, je 'Zobraziť správu'.

Metóda 2:

logger.info („Zobraziť správu“)

Aby ste sa uistili, že Logger v Jave zaznamenáva iba udalosti, ktoré sú na alebo nad úrovňou INFO, môžete použiť setLevel () vyššie diskutovaná metóda.

Teraz, keď som diskutoval o tom, ako používať Logger v Jave, poďme diskutovať o ďalšej zložke architektúry Log4j, teda o prílohách.

Dodatok alebo manipulanti

Za zaznamenávanie udalostí protokolu do cieľového miesta sú zodpovední Appender alebo Handlers. Každý záznamník má prístup k viacerým obslužným programom a od neho prijíma správu protokolu. Potom Appenders používajú formátovače alebo rozloženia na formátovanie udalostí a ich odoslanie na príslušné miesto určenia.

Aplikáciu Appender je možné vypnúť pomocou metódy setLevel (Level.OFF). Dvaja najštandardnejší manipulátori vjava.util.logovaniebalíka sú nasledovné:

  • FileHandler: Napíšte správu do protokolu
  • ConsoleHandler: Zapíše správu do konzoly

Pre vaše lepšie pochopenie som v časti vlastnosti vysvetlil niekoľko príloh.

Rozloženie alebo formátovače

Rozloženie formátovacích nástrojov sa používa na formátovanie a prevod údajov v udalosti protokolu.Rámec protokolovania poskytuje rozloženia pre protokoly HTML, XML, Syslog, JSON, obyčajný text a ďalšie.

  1. SimpleFormatter : Generuje textové správy so základnými informáciami.
  2. XMLFormatter : Vygeneruje správu XML pre protokol

Pre vaše lepšie pochopenie som v časti vlastnosti vysvetlil niekoľko rozložení.Týmto sa dostávame na koniec tohto blogu o „Logger in Java“. Dúfam, že máte chlapci jasno v tom, čo vás v tomto článku naučilo.

Pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je určený pre študentov a profesionálov, ktorí chcú byť vývojármi Java. Kurz je navrhnutý tak, aby vám dal náskok v programovaní v Jave a naučil vás základné aj pokročilé koncepty Javy spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to, prosím, v sekcii komentárov v tomto blogu „Logger in Java“ a my sa vám ozveme čo najskôr.