Vad är logger i Java och varför använder du det?



Den här artikeln om Logger i Java är en omfattande guide om Java-loggnings-API som används för loggningslösningar när du skapar projekt.

Loggning är en viktig funktion som måste beaktas av utvecklarna för att spåra felen. , som är ett av de mest populära programmeringsspråken, har ett anpassningsbart tillvägagångssätt för loggning genom att tillhandahålla ett grundläggande loggnings-API. Så i den här artikeln om Logger i Java ska jag diskutera hur kan använda den här funktionen för att möjliggöra utbyggbar loggning i Java.

Följande ämnen kommer att behandlas i den här artikeln:





    1. Loggningsbehov
    2. Loggningskomponenter
    3. Vad är Logger?
    4. Appender eller Handlers
    5. Layout eller formaterare

Innan vi dyker djupt in i loggning i java, låt oss förstå behovet av loggning.

Loggningsbehov

När vi bygger applikationer möter vi ofta fel som måste felsökas. Så med hjälp av loggar kan vi enkelt få information om vad som händer i applikationen med ett register över fel och ovanliga omständigheter. Nu kan det slå dig att varför inte använda uttalandet System.out.print () i . Problemet med dessa uttalanden är att loggmeddelanden bara skrivs ut på konsolen. Så när du stänger konsolen automatiskt kommer alla loggar att gå förlorade. Därför lagras inte loggar permanent och visas en efter en, eftersom det är en entrådig miljö.



För att undvika sådana problem förenklas loggning i Java med hjälp avAPI tillhandahålls viajava.util.loggingpaketet ochorg.apache.log4j. *paket.

Loggningskomponenter

Java-loggningskomponenterna hjälper utvecklaren att skapa loggar, skicka loggarna till respektive destination och behålla ett korrekt format. Följande är de tre komponenterna:

  • Loggers - Ansvarig för att fånga loggposter och skicka dem till motsvarande Appender.
  • Appenders eller Handlers - De ansvarar för att spela in logghändelser till en destination. Appenders formaterar händelser med hjälp av Layouts innan de skickar utdata.
  • Layouter eller formaterare - Ansvarig för att bestämma hur data ser ut när de visas i loggposten.

Du kan hänvisa till nedanstående bild för hur alla tre komponenterna fungerar:



Loggningskomponenter - Logger i Java - Edureka

När ett program gör ett loggningsanrop registrerar Logger-komponenten händelsen i ett LogRecord och vidarebefordrar det till lämplig Appender. Sedan bildade den posten med Layout enligt önskat format. Bortsett från detta kan du också använda mer än ett filter för att ange vilka Appenders som ska användas för evenemang.

vad är en parameter i tablå

Låt oss nu förstå vad som är en logger i Java på djupet.

Vad är Logger i Java?

Loggers i Java är objekt som utlöser logghändelser. De skapas och anropas i applikationskoden, där de genererar logghändelser innan de skickas till nästa komponent som är en Appender. Du kan använda flera loggare i en klass för att svara på olika händelser eller använda Loggers i en hierarki. De namnges normalt med hjälp av det hierarkiska dot-separerade namnområdet. Dessutom måste alla loggernamnen baseras på klassen eller paketnamnet på den loggade komponenten.

Bortsett från detta håller varje logger ett spår av närmaste befintliga förfader i Loggar namnutrymme och har också en 'nivå' associerad med den. Tja, jag kommer att diskutera Loggers i den senare delen av den här artikeln, men innan det, låt mig visa dig hur du skapar en Logger i Java.

Skapa ny logger

Processen med att skapa en ny Logger i Java är ganska enkel. Du måste användaLogger.getLogger ()metod. DegetLogger () identifierar Loggerns namn och tar strängen som parameter. Så om en Logger existerar, returneras den Loggen, annars skapas en ny Logger.

Syntax:

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

Här är SampleClass det klassnamn som vi får Logger-objektet för.

Exempel:

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

Nu när jag har berättat för dig hur du skapar en Logger i Java, låt oss se de olika nivåerna som finns tillgängliga för loggning.

Loggnivåer

Loggnivåer används för att kategorisera loggarna efter deras svårighetsgrad eller inverkan på applikationens stabilitet. Deorg.apache.log4j. *paketet ochjava.util.loggingbåda ger olika loggningsnivåer. Låt oss ta en titt på var och en av dem en efter en.

org.apache.log4j. *paketet ger följande nivåer i fallande ordning:

  • DÖDLIG
  • FEL
  • VARNA
  • INFO
  • DEBUG

java.util.loggingpaketet ger följande nivåer i fallande ordning:

  • ALLVARLIG (HÖGSTA NIVÅ)
  • VARNING
  • INFO
  • KONFIG
  • BRA
  • FINER
  • FINST (LÄGST NIVÅ)

Bortsett från detta tillhandahåller ovanstående paket också två ytterligare nivåerALLTochAVanvänds för att logga alla meddelanden och inaktivera loggning respektive.

__i sig själv)

Exempel på inloggning i Java med hjälp avorg.apache.log4j. *paket:

importera 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 ('WARNING' ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Final Output')}}

Så om din produktion ärroot logger som WARN-nivå i vår log4j.properties fil, kommer alla felmeddelanden med högre prioritet än WARN att skrivas ut enligt nedan:

Du kan också ställa in nivån med metoden setLevel () frånjava.util.loggingpaket enligt nedan:

logger.setLevel (Nivå.VARNING)

Exempel på inloggning i Java med hjälp avjava.util.loggingpaket:

paket edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * klass EdurekaLogger {privat slutlig statisk Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) offentlig 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, 'Hej! Välkommen från Edureka')}}

För att aktivera inloggning i din applikation medorg.apache.log4j. *paketet ellerjava.util.loggingpaket måste du konfigurera egenskapsfilen. Nästa i den här artikeln om Logger i Java, låt oss diskutera egenskaperna för dem båda.

Egenskapsfil för Log4j och Java Util Package

Exempel på Log4j-egenskaper:

# Enable Root logger option log4j.rootLogger = INFO, file, stdout # Bifoga appenders till utskriftsfil 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 # Bifoga appenders för att skriva ut på konsolen 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-egenskapsfilen skapas i projektets src-mapp.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Skriver ut alla loggar i en fil
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Skriver ut alla loggar i konsolen
  • log4j.appender.file.File = D: loglogging.log -> Anger platsen för loggfilen
  • log4j.appender.file.MaxFileSize = 10 MB -> Maximal storlek på loggfilen till 10 MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Begränsar antalet säkerhetskopierade filer till 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Anger det mönster som loggar ska skrivas ut till loggfilen.
  • log4j.appender.file.layout.ConversionPattern =% d {åååå-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Ställer in standardkonverteringsmönstret.

Prov Java Util Package Properties File

handlers = java.util.logging.ConsoleHandler .level = VARNING # Output lagras i standardkatalogen 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 # Loggnivån begränsas till VARNING och högre. java.util.logging.ConsoleHandler.level = VARNING java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Här,

sortera en matris i c ++ - programmet
  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Loggfiler skulle skrivas tillC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->Det högsta belopp som loggaren skriver till en fil i byte.
  • java.util.logging.FileHandler.count = 1 -> Anger antalet utdatafiler
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Nämner formateraren som används för formatering. Här används XML Formatter.
  • java.util.logging.ConsoleHandler.level = VARNING -> Ställer in standardloggnivån till VARNING
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->AngerFormaterareatt användas av allaConsoleHandler‘S. Här används SimpleFormatter.

Loggningshändelser

För att logga in händelser , måste du se till att du tilldelar en nivå för att enkelt skicka händelserna. För att tilldela en nivå och nämna ett meddelande kan du använda metoderna nedan:

Metod 1:

logger.log (Level.INFO, “Visa meddelande”)
Här är nivån INFO och meddelandet som ska skrivas ut är 'Visa meddelande'.

Metod 2:

logger.info (“Visa meddelande”)

För att säkerställa att Logger i Java, bara loggar händelser som ligger på eller över INFO-nivån, kan du använda setLevel () metod som diskuterats ovan.

Nu när jag har diskuterat hur man använder Logger i Java, låt oss diskutera nästa komponent i Log4j-arkitekturen, dvs Appenders.

Appender eller Handlers

Appender eller Handlers är ansvariga för att registrera logghändelser till en destination. Varje logger har åtkomst till flera hanterare och tar emot loggmeddelandet från loggaren. Sedan använder Appenders Formaters eller Layouts för att formatera händelserna och skicka dem till motsvarande destination.

En appender kan stängas av med metoden setLevel (Level.OFF). De två mest vanliga hanterarna ijava.util.loggingpaketet är som följer:

  • FileHandler: Skriv loggmeddelandet till filen
  • ConsoleHandler: Skriver loggmeddelandet till konsolen

För din bättre förståelse har jag förklarat några Appenders i fastighetsavsnittet.

Layout eller formaterare

Layouten för Formaterare används för att formatera och konvertera data i en logghändelse.Loggningsramar ger layouter för HTML, XML, Syslog, JSON, vanlig text och andra loggar.

  1. Enkel formatering : Skapar textmeddelanden med grundläggande information.
  2. XMLFormatter : Skapar XML-meddelande för loggen

För din bättre förståelse har jag förklarat några layouter i avsnittet egenskaper.Med detta kommer vi till slutet av denna blogg om ”Logger i Java”. Jag hoppas att ni är tydliga med vad som har lärt er i denna artikel.

Kolla in av Edureka, ett pålitligt online-lärande företag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för studenter och yrkesverksamma som vill bli Java-utvecklare. Kursen är utformad för att ge dig ett försprång till Java-programmering och träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i den här 'Logger i Java' -bloggen så kommer vi tillbaka till dig så snart som möjligt.