Hvad er logger i Java, og hvorfor bruger du det?



Denne artikel om Logger i Java er en omfattende guide til Java logging API, der bruges til logningsløsninger, mens du opretter projekter.

Logning er en vigtig funktion, som udviklerne skal overveje for at spore fejlene. , der er et af de mest populære programmeringssprog, har en tilpasset tilgang til logning ved at tilbyde en grundlæggende logning-API. Så i denne artikel om Logger i Java skal jeg diskutere hvordan kan bruge denne funktion til at aktivere udvidelig logning i Java.

Følgende emner vil blive behandlet i denne artikel:





størrelsen på array i javascript
    1. Behov for logning
    2. Logningskomponenter
    3. Hvad er Logger?
    4. Appender eller Handlers
    5. Layout eller formater

Før dykker vi dybt ned i logning i java, lad os forstå behovet for logning.

Behov for logning

Mens vi bygger applikationer, står vi ofte over for fejl, der skal debugges. Så ved hjælp af logfiler kan vi nemt få oplysninger om, hvad der sker i applikationen med en registrering af fejl og usædvanlige omstændigheder. Nu kan det slå dig op, at hvorfor ikke bruge udsagnet System.out.print () i . Problemet med disse udsagn er, at logbeskeder kun udskrives på konsollen. Så når du lukker konsollen automatisk, går alle logfiler tabt. Derfor lagres logfiler ikke permanent og vises en efter en, da det er et miljø med en enkelt tråd.



For at undgå sådanne problemer forenkles logning i Java ved hjælp afAPI leveret gennemjava.util.loggingpakke ogorg.apache.log4j. *pakke.

Logningskomponenter

Java-logningskomponenterne hjælper udvikleren med at oprette logfiler, videregive logfiler til den respektive destination og opretholde et korrekt format. Følgende er de tre komponenter:

  • Loggere - Ansvarlig for at registrere logposter og videresende dem til den tilsvarende Appender.
  • Appenders eller Handlers - De er ansvarlige for at registrere loghændelser til en destination. Appenders formaterer begivenheder ved hjælp af Layouts, inden de sender output.
  • Layout eller formatering - Ansvarlig for at bestemme, hvordan data ser ud, når de vises i logposten.

Du kan henvise til nedenstående billede for at arbejde med alle de tre komponenter:



Logningskomponenter - Logger i Java - Edureka

Når et program foretager et logningskald, registrerer Logger-komponenten hændelsen i et LogRecord og videresender den til den relevante Appender. Derefter dannede den posten ved hjælp af Layout i henhold til det krævede format. Bortset fra dette kan du også bruge mere end et filter til at specificere, hvilke Appenders der skal bruges til begivenheder.

Lad os nu forstå, hvad der er en logger i Java i dybden.

Hvad er Logger i Java?

Loggere i Java er objekter, der udløser loghændelser. De oprettes og kaldes i programmets kode, hvor de genererer Loghændelser, før de sendes til den næste komponent, som er en Appender. Du kan bruge flere loggere i en enkelt klasse til at svare på forskellige begivenheder eller bruge loggere i et hierarki. De navngives normalt ved hjælp af det hierarkiske dot-adskilte navneområde. Desuden skal alle loggernavne være baseret på klassen eller pakkenavnet på den loggede komponent.

Bortset fra dette holder hver logger oversigt over den nærmeste eksisterende forfader i Logger navneområde og har også et 'niveau' tilknyttet. Nå, jeg vil diskutere loggerne i sidste del af denne artikel, men før det, lad mig vise dig, hvordan du opretter en logger i Java.

Opret ny logger

Processen med at oprette en ny Logger i Java er ret enkel. Du skal brugeLogger.getLogger()metode. DetgetLogger () identificerer navnet på loggeren og tager streng som parameter. Så hvis der findes en logger, returneres den logger, ellers oprettes der en ny logger.

Syntaks:

statisk loggerlogger = Logger.getLogger (SampleClass.class.getName ())

Her er SampleClass det klassenavn, som vi får Logger-objektet til.

Eksempel:

offentlig klasse kunde {privat statisk endelig Logger LOGGER = Logger.getLogger (Customer.class) offentlig ugyldighed getCustomerDetails () {}}

Nu hvor jeg har fortalt dig, hvordan du opretter en logger i Java, lad os se de forskellige niveauer, der er tilgængelige i logning.

Logniveauer

Logniveauer bruges til at kategorisere logfilerne efter deres sværhedsgrad eller indvirkningen på applikationens stabilitet. Detorg.apache.log4j. *pakke ogjava.util.loggingbegge giver forskellige niveauer af logning. Lad os se på hver af dem en efter en.

org.apache.log4j. *pakken indeholder følgende niveauer i faldende rækkefølge:

  • FATAL
  • FEJL
  • ADVARE
  • INFO
  • FEJLFINDE

java.util.loggingpakken indeholder følgende niveauer i faldende rækkefølge:

  • ALVORLIGE (HØJESTE NIVEAU)
  • ADVARSEL
  • INFO
  • KONFIG
  • BØDE
  • FINER
  • FINEST (LAVESTE NIVEAU)

Bortset fra dette giver ovenstående pakke også to yderligere niveauerALLEogAFbruges til at logge henholdsvis alle meddelelser og deaktivere logning.

Eksempel på logning i Java ved hjælp aforg.apache.log4j. *pakke:

importer org.apache.log4j.Logger offentlig klasse kunde {statisk logger-logger = Logger.getLogger (kunde.klasse) offentlig statisk ugyldig hoved (String [] args) {logger.error ('ERROR') logger.warn ('ADVARSEL' ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Final Output')}}

Så hvis din produktion errodlogger som WARN-niveau i vores log4j.egenskaber fil, så udskrives alle fejlmeddelelser med en højere prioritet end WARN som nedenfor:

Du kan også indstille niveauet ved hjælp af metoden setLevel () frajava.util.loggingpakke som nedenfor:

logger.setLevel (niveau.ADVARSEL)

Eksempel på logning i Java ved hjælp afjava.util.loggingpakke:

pakke edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * klasse EdurekaLogger {privat endelig statisk Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) offentlig ugyldig sampleLog () {LOGGER.log (niveau.ADVARSEL, 'Velkommen til Edureka!')}} offentlig klasse kunde {offentlig statisk ugyldig hoved (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Niveau.ADVARSEL, 'Hej! Velkommen fra Edureka')}}

For at aktivere logning i din applikation ved hjælp aforg.apache.log4j. *pakke ellerjava.util.loggingpakke, skal du konfigurere egenskabsfilen. Næste i denne artikel om Logger i Java, lad os diskutere egenskabsfilen for dem begge.

Egenskaber Fil af Log4j og Java Util-pakke

Eksempel på Log4j egenskabsfil:

# Enable Root logger option log4j.rootLogger = INFO, file, stdout # Vedhæft appenders til udskrivning af fil log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender. file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {åååå-MM-dd HH: mm : ss}% -5p% c {1}:% L -% m% n # Vedhæft appenders for at udskrive på konsol 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 {åååå-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n
  • Log4j-egenskabsfilen oprettes inde i projektets src-mappe.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Udskriver alle logfiler i en fil
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Udskriver alle logfiler i konsollen
  • log4j.appender.file.File = D: loglogging.log -> Angiver placeringen af ​​logfilen
  • log4j.appender.file.MaxFileSize = 10 MB -> Maksimal størrelse af logfilen til 10 MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Begrænser antallet af sikkerhedskopifiler til 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Angiver det mønster, hvor logfiler udskrives til logfilen.
  • log4j.appender.file.layout.ConversionPattern =% d {åååå-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Indstiller standardkonverteringsmønsteret.

Prøve Java Util Package Properties File

handlers = java.util.logging.ConsoleHandler .level = ADVARSEL # Output gemmes i standardmappen 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 # Logniveau er begrænset til ADVARSEL og derover. java.util.logging.ConsoleHandler.level = ADVARSEL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Her,

  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Logfiler skrives tilC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->Det maksimale beløb, som loggeren skriver til en fil i byte.
  • java.util.logging.FileHandler.count = 1 -> Angiver antallet af outputfiler
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Omtaler formateringen, der bruges til formatering. Her bruges XML Formatter.
  • java.util.logging.ConsoleHandler.level = ADVARSEL -> Indstiller standardlogniveauet til ADVARSEL
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->AngiverFormaterskal bruges af alleConsoleHandler'S. Her bruges SimpleFormatter.

Logning af begivenheder

For at logge ind begivenheder , skal du sørge for, at du tildeler et niveau, der nemt kan arkivere begivenhederne. For at tildele et niveau og nævne en besked kan du bruge nedenstående metoder:

Metode 1:

logger.log (Level.INFO, “Vis besked”)
Her er niveau INFO, og beskeden, der skal udskrives, er 'Vis besked'.

Metode 2:

logger.info (“Vis besked”)

For at sikre, at Logger i Java kun logger begivenheder, der er på eller over INFO-niveauet, kan du bruge setLevel () metode beskrevet ovenfor.

Nu, hvor jeg har diskuteret, hvordan man bruger Logger i Java, lad os diskutere den næste komponent i Log4j-arkitekturen, dvs. Appenders.

Appender eller Handlers

Appender eller Handlers er ansvarlige for at registrere loghændelser til en destination. Hver logger har adgang til flere håndterere og modtager logbeskeden fra loggeren. Derefter bruger Appenders Formatere eller Layouts til at formatere begivenhederne og sende dem til den tilsvarende destination.

En appender kan slukkes ved hjælp af setLevel (Level.OFF) -metoden. De to mest standardhandlere ijava.util.loggingpakken er som følger:

  • FileHandler: Skriv logbeskeden, der skal arkiveres
  • ConsoleHandler: Skriver logmeddelelsen til konsollen

For din bedre forståelse har jeg forklaret få Appenders i egenskabssektionen.

Layout eller formater

Layoutet af Formaters bruges til at formatere og konvertere data i en loghændelse.Logningsrammer giver layout til HTML, XML, Syslog, JSON, almindelig tekst og andre logfiler.

  1. Enkel formatering : Genererer tekstbeskeder med grundlæggende oplysninger.
  2. XMLFormatter : Genererer XML-besked til loggen

For din bedre forståelse har jeg forklaret et par layouts i egenskabssektionen.Med dette kommer vi til slutningen af ​​denne blog om 'Logger i Java'. Jeg håber, at I er klare med, hvad der er blevet lært jer i denne artikel.

Tjek den af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarfeltet på denne 'Logger i Java' -blog, og vi vender tilbage til dig hurtigst muligt.