Java >> Java tutorial >  >> Tag >> Log4j

Log4j prioritetseksempel

Denne artikel er et selvstudie om logprioritetsniveauer i Log4j. I denne vejledning skal vi konfigurere log4j via egenskabsfiler.

1. Introduktion

Log4J (Java ) er en meget brugt logningsramme til Java. Det fortsætter med at vokse kontinuerligt med den nylige opgradering til Log4j2. Log4j understøtter logning via Logger, Appender og Layouts.

Logger er interaktionspunktet for applikationen og udfører logningsaktiviteten. Det bruges til at angive logningstilstanden og navnet på loggeren. Den leverer også logfiler til den angivne destination ved hjælp af appenderen. Tillægget leverer loggen til logningsdestinationen dvs. konsol, fil eller database sammen med muligheder for at finjustere logningsmekanismen. Appendere har generelt livscykluskonfiguration og filtreringsunderstøttelse. Filtrering gør det muligt at filtrere de meddelelser, hvis logningstilstand ikke matcher det konfigurerede niveau. Log4j understøtter flere foruddefinerede appenders og hjælper også med at skabe brugerdefinerede appenders.

Layout angiver visningsformatet for logfilerne. Det mest brugte layout til Log4j er PatternLayout . Et prøvemønster er %d [%t] %-5p (%F:%L) – %m%n. Formatstrengene for mønsteret er som følger:

  • Dato –  Fuld dato indtil mikrosekunder.
  • Tråd – JVM-tråd, der logger output.
  • Logningstilstand – INFO/FEJL/DEBUG/ADVARSEL.
  • Klasse – Java-klasse, der logger output.
  • Linjenummer – Linjenummer i java-klassen.
  • Besked – Beskeden logget.
  • Standard linjeseparator -/n, medmindre andet er angivet.

2. Prioritet

Log4j understøtter følgende prioritetsniveauer:

  • FRA – slår logning fra.
  • DEBUG – bruges generelt til debugging formål. dvs. udviklingsfokuseret.
  • SPOR – ligner DEBUG, men bruges til at vise mere detaljeret information til fejlretning.
  • INFO – bruges til at vise generel information i logfiler. For det meste log analytiske mål på denne slags logfiler. Derfor er det den mest brugte logningstilstand.
  • ADVAR – bruges til at vise advarsler, men ikke fejl. Mest sandsynligt indikerer uopfyldte afhængigheder og kan eller ej resultere i fejl.
  • FEJL – bruges til at vise fejl i applikationen.
  • FATAL – bruges til at vise besked lige før programmet stopper.

Log4j skal logge på en af ​​de ovenfor specificerede tilstande. De er opført i stigende prioriteret rækkefølge.

Eksempelklasse

package com.jcg.examples;
import org.apache.log4j.Logger;
public class LoggerMain {
public static final Logger logger = Logger.getLogger(LoggerMain.class);
public static void main(String[] args) {
while (true) {
logger.info("This is a warn log");
logger.debug("This is a debug log");
}
}
}
  • Linje 4 konfigurerer en logger med navn som com.jcg.examples.LoggerMain .
  • Linje 7,8 angiver den anvendte metode, dvs. logningsniveau for denne meddelelse.

Den næste del er konfiguration af loggeren via XML-fil eller egenskaber. Nedenfor har vi brugt egenskaber til at give en passende konfiguration for appenderen og destinationen.

Konfiguration

log4j.rootLogger=DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
  • Linje 1 angiver tærskelværdien/tilladt logniveau for applikationen.

Meddelelser, der passerer tærskelkriterierne, vil blive vist i logningsdestinationen. Nedenstående skærmbillede viser visningen af ​​begge meddelelser.

log4j ufiltrerede logfiler

3. Filtrering baseret på prioritet

Log4j understøtter filtrering baseret på angivet tilstand. I betragtning af det samme java-eksempel, men med nedenstående konfiguration, ville resultaterne være anderledes.

log4j.rootLogger=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

DEBUG har mindre prioritet end WARN . Derfor kun meddelelser logget med warn metode vil blive vist. Prioritet filtrerer beskeder under det angivne prioritetsniveau. Generelt i produktionen køres applikationer med fejltilstand for at filtrere andre meddelelser, mens den i udviklingsmiljøer er indstillet til DEBUG-niveau for at vise alle logmeddelelser for at hjælpe med applikationsfejlretning.

Nedenstående skærmbillede viser kun de filtrerede logfiler.

log4j filtrerede logfiler

Her er en anden variation af konfigurationen, der giver det samme resultat som ovenfor.

log4j.rootLogger=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

Vi har specificeret tilstanden som INFO . INFO har højere prioritet end DEBUG men har mindre prioritet end WARN . Så WARN beskeder vil blive vist, men DEBUG beskeder vil blive filtreret.

4. Udførelsestrin

  1. Importer eksemplet som et Maven-projekt
  2. Maven importerer afhængighederne automatisk
  3. Stop det kørende projekt i formørkelse efter 5 minutter

5. Download kildekoden

log prioritetsniveauer
Java tag