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

Log4j Datoformat Eksempel

Denne artikel er et selvstudie om datoformatmønstre 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. Appenderen leverer loggen til logningsdestinationen dvs. konsollen, filen eller databasen 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 eksempelmø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 logning af output.
• Logging Mode – INFO/FEJL/DEBUG/WARN.
• Klasse – Java-klasse logger output.
• Linjenummer – Linjenummer i en java-klasse.
• Besked – Beskeden logget.
• Standard linjeseparator -/n medmindre andet er angivet.

I denne tutorial skal vi dykke dybere ned i %d dato mønster.

2. SimpleDateFormat-mønster

Vi vil designe en simpel logningsklasse for at illustrere vores scenarie med eksempler.

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) {
int loop = 0;
while (loop < 1000) {
logger.warn("This is a warn log");
loop++;
try {
Thread.sleep(20);
} catch (InterruptedException e) {
logger.error("Error occurred in sleep", e);
Thread.currentThread().interrupt();
}
}
}
}

• Linje 4 konfigurerer en logger med navnet som com.jcg.examples.LoggerMain .
• Linje 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 tillægget 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 5 indeholder datomønsteret. Her svarer mønsterstrengen til klassen java.text.SimpleDateFormat i java.

Mønsterstrengen kan opdeles i

  • åååå- år med 4 cifre
  • MM – Måned med 2 cifre
  • dd – dato med 2 cifre
  • HH – Time
  • mm -minutter
  • ss – sekunder
  • SSS – millisekunder

Dette mønster bruges af SimpleDateFormat klasse for at gengive datoen i logfilen. Nedenfor er et skærmbillede af en sådan logningsoutput.

log4j_default_format

Log4j understøtter tre andre tilpassede hjælpeklasser til datoformat, som vi vil dække i nedenstående afsnit.

3. ISO8601-formatering

Ovenstående output kan opnås ved at bruge org.apache.log4j.helpers.ISO8601DateFormat klasse. Nedenfor er konfigurationen til at aktivere ISO8601DateFormat klasse.

ISO8601-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{ISO8601} %-5p - %m%n
  • I linje 5, i stedet for et datomønster, ISO8601 er angivet til at kalde ISO8601DateFormat klasse.

Outputtet ligner nøjagtigt det tidligere output, der er konfigureret af mønsterstrengen yyyy-MM-dd HH:mm:ss,SSS leveret til SimpleDateFormat klasse.

4. DateTime formatter

En alternativ måde at repræsentere hele tiden på er at bruge org.apache.log4j.helpers.DateTimeDateFormat klasse. Nedenfor er konfigurationen til at aktivere DateTimeDateFormat klasse.

DATO-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{DATE} %-5p - %m%n
  • På linje 5, i stedet for ISO8601 mønster, DATE er angivet til at kalde DateTimeDateFormat klasse.

Nedenfor kan vi se outputtet af kørende datoformater. Der er kun en subtil forskel mellem ISO8601 formatter og DATE formater. Datoen er repræsenteret i den udvidede form for bedre læsbarhed. Det svarer til at angive mønsteret dd MM YYYY HH:mm:ss,SSS til SimpleDateFormat klasse.

log4j_DATE_pattern

5. AbsoluteTime-formatering

Absolut formatering viser kun tidsdelen af ​​loggen og ignorerer dagdelen. Dette indebærer brug af org.apache.log4j.helpers.AbsoluteTimeDateFormat klasse. Nedenfor er konfigurationen til at aktivere AbsoluteTimeDateFormat klasse.

ABSOLUT 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{ABSOLUTE} %-5p - %m%n
  • På linje 5 i stedet for DATE mønster, ABSOLUTE er angivet til at kalde AbsoluteTimeDateFormat klasse.

Nedenfor kan vi se outputtet af at køre Absolute formatter. Det svarer til at angive mønsteret HH:mm:ss,SSS til SimpleDateFormat klasse.

log4j_ABSOLUTE_pattern

6. Udførelsestrin

  1. Importer eksemplet som et Maven-projekt.
  2. Maven importerer afhængighederne automatisk.
  3. Kør projektet ved at ændre konfigurationen som nævnt ovenfor.
  4. Stop det kørende projekt i formørkelse efter 5 minutter.

7. Resumé

I dette afsnit har vi dækket SimpleDateFormatter og log4js brugerdefinerede formatere. Log4j anbefaler sine egne brugerdefinerede formatere i helpers pakke over SimpleDateFormatter af præstationsmæssige årsager.

8. Download kildekoden

kerne java log4j
Java tag