Wat is logger in Java en waarom gebruik je het?



Dit artikel over Logger in Java is een uitgebreide gids over de Java-logging-API die wordt gebruikt voor logboekoplossingen tijdens het maken van projecten.

Logboekregistratie is een belangrijke functie waarmee de ontwikkelaars rekening moeten houden om de fouten op te sporen. , een van de meest populaire programmeertalen, wordt geleverd met een aanpasbare benadering van logboekregistratie door middel van een eenvoudige logging-API. Dus in dit artikel over Logger in Java ga ik bespreken hoe kan deze functie gebruiken om uitbreidbare logboekregistratie in Java mogelijk te maken.

In dit artikel komen de volgende onderwerpen aan bod:





    1. Behoefte aan loggen
    2. Componenten loggen
    3. Wat is een logger?
    4. Appender of Handlers
    5. Layout of Formatters

Voordat we diep ingaan op het inloggen in Java, laten we ons de noodzaak van loggen begrijpen.

Behoefte aan loggen

Bij het bouwen van applicaties komen we vaak fouten tegen die moeten worden opgespoord. Met behulp van logboeken kunnen we dus gemakkelijk informatie krijgen over wat er in de applicatie gebeurt met een overzicht van fouten en ongebruikelijke omstandigheden. Nu zou het je kunnen opvallen dat, waarom zou je de System.out.print () -instructie niet gebruiken in . Het probleem met deze verklaringen is dat logboekberichten alleen op de console worden afgedrukt. Dus zodra u de console sluit, gaan automatisch alle logboeken verloren. Daarom worden logboeken niet permanent opgeslagen en worden ze één voor één weergegeven, aangezien het een omgeving met één thread is.



Om dergelijke problemen te voorkomen, wordt het inloggen in Java vereenvoudigd met behulp van deAPI geleverd via dejava.util.loggingpakket en deorg.apache.log4j. *pakket.

Componenten loggen

De Java-logboekcomponenten helpen de ontwikkelaar om logboeken te maken, de logboeken door te geven aan de respectievelijke bestemming en een juist formaat te behouden. De volgende zijn de drie componenten:

  • Loggers - Verantwoordelijk voor het vastleggen van logboekrecords en deze doorgeven aan de bijbehorende Appender.
  • Appenders of handlers - Ze zijn verantwoordelijk voor het registreren van logboekgebeurtenissen naar een bestemming. Appenders formatteren events met behulp van Layouts, voordat ze outputs versturen.
  • Layouts of Formatters - Verantwoordelijk om te bepalen hoe gegevens eruitzien wanneer ze in de logboekvermelding verschijnen.

U kunt de onderstaande afbeelding raadplegen voor de werking van alle drie de componenten:



Logging Components - Logger in Java - Edureka

Wanneer een applicatie een logging-oproep doet, registreert de Logger-component de gebeurtenis in een LogRecord en stuurt deze door naar de juiste Appender. Vervolgens heeft het het record opgemaakt met behulp van de lay-out volgens het vereiste formaat. Afgezien hiervan kunt u ook meer dan één filters gebruiken om aan te geven welke appenders voor evenementen moeten worden gebruikt.

Laten we nu eens diepgaand begrijpen wat een logger in Java is.

Wat is Logger in Java?

Loggers in Java zijn objecten die logboekgebeurtenissen activeren. Ze worden gemaakt en worden aangeroepen in de code van de applicatie, waar ze logboekgebeurtenissen genereren voordat ze doorgeven aan de volgende component, een Appender. U kunt meerdere loggers in een enkele klasse gebruiken om op verschillende gebeurtenissen te reageren of loggers in een hiërarchie gebruiken. Ze krijgen normaal gesproken een naam met behulp van de hiërarchische door punten gescheiden naamruimte. Ook moeten alle Logger-namen gebaseerd zijn op de klasse of de pakketnaam van de gelogde component.

Afgezien hiervan houdt elke logger een track bij van de dichtstbijzijnde bestaande voorouder in de Logboeken namespace en er is ook een 'Level' aan gekoppeld. Welnu, ik zal de Loggers in het laatste deel van dit artikel bespreken, maar laat me je eerst laten zien hoe je een Logger in Java kunt maken.

Maak een nieuwe logger

Het maken van een nieuwe Logger in Java is vrij eenvoudig. Je moet gebruikenLogger.getLogger ()methode. DegetLogger() identificeert de naam van de Logger en neemt string als parameter. Dus als er al een Logger bestaat, wordt die Logger geretourneerd, anders wordt er een nieuwe Logger aangemaakt.

Syntaxis:

statische Logger-logger = Logger.getLogger (SampleClass.class.getName ())

Hier is SampleClass de klassenaam waarvoor we het Logger-object krijgen.

Voorbeeld:

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

Nu ik je heb verteld hoe je een logger in Java kunt maken, laten we de verschillende niveaus bekijken die beschikbaar zijn bij het loggen.

Log Niveaus

Logniveaus worden gebruikt om de logboeken te categoriseren op basis van hun ernst of de impact op de stabiliteit van de applicatie. Deorg.apache.log4j. *pakket en dejava.util.loggingbeide bieden verschillende logboekregistratieniveaus. Laten we ze allemaal een voor een bekijken.

org.apache.log4j. *pakket biedt de volgende niveaus in aflopende volgorde:

  • FATAAL
  • FOUT
  • WAARSCHUWEN
  • INFO
  • DEBUG

java.util.loggingpakket biedt de volgende niveaus in aflopende volgorde:

  • ERNSTIG (HOOGSTE NIVEAU)
  • WAARSCHUWING
  • INFO
  • CONFIG
  • FIJN
  • FIJNER
  • BESTE (LAAGSTE NIVEAU)

Afgezien hiervan biedt het bovenstaande pakket ook twee extra niveausALLEenUITgebruikt voor het loggen van alle berichten en het uitschakelen van logboekregistratie.

Voorbeeld van inloggen in Java met deorg.apache.log4j. *pakket:

import org.apache.log4j.Logger public class Klant {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 ('Final Output')}}

Dus als uw output isroot logger als WARN-niveau in onze log4j.properties bestand, dan worden alle foutmeldingen met een hogere prioriteit dan WARN afgedrukt zoals hieronder:

U kunt het niveau ook instellen met de methode setLevel () van dejava.util.loggingpakket zoals hieronder:

logger.setLevel (Level.WARNING)

Voorbeeld van inloggen in Java met dejava.util.loggingpakket:

pakket 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) openbaar 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, 'Hallo! Welkom van Edureka')}}

Om inloggen op uw applicatie mogelijk te maken met deorg.apache.log4j. *pakket of dejava.util.loggingpakket, moet u het eigenschappenbestand configureren. Laten we vervolgens in dit artikel over Logger in Java het eigenschappenbestand van beide bespreken.

Eigenschappenbestand van Log4j en Java Util-pakket

Voorbeeld van Log4j-eigenschappenbestand:

# Activeer root logger optie log4j.rootLogger = INFO, file, stdout # Voeg appenders toe aan print bestand 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 {jjjj-MM-dd UU: mm : ss}% -5p% c {1}:% L -% m% n # Voeg appenders toe om op console af te drukken 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 {jjjj-MM-dd UU: mm: ss}% -5p% c {1}:% L -% m% n
  • Het Log4j-eigenschappenbestand wordt gemaakt in de src-map van het project.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Drukt alle logboeken in een bestand af
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Drukt alle logboeken in de console af
  • log4j.appender.file.File = D: loglogging.log -> Specificeert de locatie van het logbestand
  • log4j.appender.file.MaxFileSize = 10 MB -> Maximale grootte van het logbestand tot 10 MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Beperkt het aantal back-upbestanden tot 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Specificeert het patroon waarin logboeken worden afgedrukt naar het logbestand.
  • log4j.appender.file.layout.ConversionPattern =% d {jjjj-MM-dd UU: mm: ss}% -5p% c {1}:% L -% m% n -> Stelt het standaard conversiepatroon in.

Monster Java Util Package Properties File

handlers = java.util.logging.ConsoleHandler .level = WAARSCHUWING # Uitvoer wordt opgeslagen in de standaarddirectory 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 # Het niveau van logboeken is beperkt tot WAARSCHUWING en hoger. java.util.logging.ConsoleHandler.level = WAARSCHUWING java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Hier,

  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Logbestanden zouden naarC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->De maximale hoeveelheid die de logger in bytes naar een bestand schrijft.
  • java.util.logging.FileHandler.count = 1 -> Specificeert het aantal uitvoerbestanden
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Noemt de formatter gebruikt voor het formatteren. Hier wordt XML Formatter gebruikt.
  • java.util.logging.ConsoleHandler.level = WAARSCHUWING -> Stelt het standaard logniveau in op WAARSCHUWING
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->Specificeert hetFormattervoor iedereenConsoleHandler‘S. Hier wordt SimpleFormatter gebruikt.

Gebeurtenissen loggen

Om gebeurtenissen in te loggen , moet u ervoor zorgen dat u een niveau toewijst om de gebeurtenissen gemakkelijk te kunnen filteren. Om een ​​niveau toe te wijzen en een bericht te noemen, kunt u de onderstaande methoden gebruiken:

Methode 1:

logger.log (Level.INFO, 'Bericht weergeven')
Hier is het niveau INFO en het bericht dat moet worden afgedrukt is 'Bericht weergeven'.

Methode 2:

logger.info ('Bericht weergeven')

Om ervoor te zorgen dat Logger in Java alleen gebeurtenissen registreert die zich op of boven het INFO-niveau bevinden, kunt u de setLevel () methode hierboven besproken.

Nu ik heb besproken hoe Logger in Java te gebruiken, laten we het volgende onderdeel van Log4j-architectuur bespreken, namelijk Appenders.

Appender of Handlers

Appender of Handlers zijn verantwoordelijk voor het opnemen van logboekgebeurtenissen naar een bestemming. Elke logger heeft toegang tot meerdere handlers en ontvangt het logbericht van de logger. Appenders gebruiken vervolgens opmaakprogramma's of lay-outs om de gebeurtenissen op te maken en naar de bijbehorende bestemming te sturen.

Een Appender kan worden uitgeschakeld met behulp van de setLevel (Level.OFF) methode. De twee meest standaard handlers in dejava.util.loggingpakket zijn als volgt:

  • FileHandler: Schrijf het logboekbericht naar een bestand
  • ConsoleHandler: Schrijft het logboekbericht naar de console

Voor een beter begrip, heb ik enkele Appenders uitgelegd in het eigenschappengedeelte.

Layout of Formatters

De lay-out van Formatters wordt gebruikt om gegevens in een logboekgebeurtenis te formatteren en te converteren.Logging-frameworks bieden lay-outs voor HTML, XML, Syslog, JSON, platte tekst en andere logboeken.

  1. SimpleFormatter : Genereert tekstberichten met basisinformatie.
  2. XMLFormatter : Genereert XML-bericht voor het logboek

Voor een beter begrip heb ik een paar lay-outs uitgelegd in het gedeelte met eigenschappen.Hiermee komen we aan het einde van deze blog over “Logger in Java”. Ik hoop dat jullie duidelijk zijn met wat je in dit artikel is geleerd.

Bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De training- en certificeringcursus Java J2EE en SOA van Edureka is bedoeld voor studenten en professionals die Java-ontwikkelaar willen worden. De cursus is bedoeld om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

wat is instantievariabele in java

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze 'Logger in Java' -blog en we nemen zo snel mogelijk contact met u op.