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

Log4j Rolling Daily File Eksempel

Logning er en kritisk funktion i enhver applikation. I denne tutorial vil jeg vise dig, hvordan du implementerer nogle nyttige Log4j RollingFileAppender Mønstre til at skrive logningsmekanismen i Java-udvikling.

1. Introduktion

Udskrivning af beskeder til konsollen er en integreret del af udviklingstesten og fejlretningen af ​​et Java-program. Hvis udviklere arbejder på en serversideapplikation, hvor de ikke kan se, hvad der foregår inde på serveren, så er deres eneste synlighedsværktøj en log fil.

Uden logfiler kan udviklere ikke foretage nogen fejlfinding eller se, hvad der foregår inde i applikationen. Java har ret praktisk System.out.println() metoder til at udskrive noget på konsollen, som også kan dirigeres til en logfil, men det er ikke tilstrækkeligt til en virkelig Java-applikation.

Hvis udviklere kører et Java-program i Linux eller i Unix-baserede systemer, Log4j eller SLF4j eller enhver anden logningsramme tilbyder mange flere funktioner, fleksibilitet og forbedring af meddelelseskvalitet, hvilket ikke er muligt ved hjælp af System.out.println() udsagn.

1.1 Hvad er Log4j?

Log4j er en enkel, fleksibel og hurtig Java-baseret logningsramme. Det er trådsikkert og understøtter internationalisering. Vi har hovedsageligt 3 komponenter at arbejde med Log4j :

  • Logger :Den bruges til at logge meddelelserne
  • Tillæg :Det bruges til at publicere logningsoplysningerne til destinationen som fil, database, konsol osv.
  • Layout :Det bruges til at formatere logningsoplysninger i forskellige stilarter

1.1.1 Log4j2 Appender Interface

Appender er en grænseflade, som primært er ansvarlig for at udskrive logningsmeddelelserne til de forskellige destinationer såsom konsol, filer, sockets, database osv. I Log4j2 vi har forskellige typer Appender implementeringsklasser:

Fig. 1:Log4j-tillæg

2. Log4j Daily Rolling Log File Eksempel

Det er muligt at konfigurere Log4j til at opdele en almindelig logfil i mange, baseret på en bestemt tidsplan, såsom dagligt, ugentligt, månedligt eller endda hver time, minutiøst. Denne teknik kaldes Rolling Log Files . Lad os f.eks. sige, at hvis den daglige rullende filplan bruges, så Log4j ville oprette følgende logfiler:

sample.log.2017-11-15
sample.log.2017-11-14
sample.log.2017-11-13
…
sample.log

Hver logfil rulles ud hver dag, og filen uden dato i sit navn er den aktuelle logfil . Antag, at i dag er 2017-11-16 og ved midnat, Log4j vil sikkerhedskopiere den nuværende sample.log fil i sample.log. 2017-11-16 . Den originale sample.log bliver nu den aktuelle logfil for den nye dag, dvs. 2017-11-17 og så videre. Denne tilgang er meget nyttig, når der er behov for at spore logfilerne baseret på et tidsinterval. Det hjælper også med hurtigt at identificere problemet ved kun at inspicere de relevante logfiler.

For at implementere den Daglige rullende log filer, Log4j framework giver DailyRollingFileAppender klasse, som er nedarvet fra FileAppender klasse. For at bruge denne Appender skal udviklere angive logfilnavnet og et datomønster. Jeg forsøgte at lave en lille ændring i den originale version af DailyRollingFileAppender for at tilføje maxBackupIndex ejendom. Denne egenskab vil hjælpe udviklere med at rydde op i de gamle logfiler, som kan være nødvendige for fremtidig brug.

Lad os se det enkle kodestykke, der følger DailyRollingFileAppender implementering.

log4j.appender.Appender2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Appender2.File=/log/sample.log
log4j.appender.Appender2.DatePattern='.'yyyy-MM-dd
log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

Følgende tabel viser alle datomønstre defineret af Log4j ramme for Daily Rolling Log filer:

Tidsplan Datomønster Eksempel på logfilens navn
Minut '.'yyyy-MM-dd-HH-mm sample.log.2017-11-09-21-54
Hver time '.'yyyy-MM-dd-HH sample.log.2017-11-09-22
Halv-dagligt '.'yyyy-MM-dd-a sample.log.2017-11-09-AM
sample.log.2017-11-09-PM
Dagligt '.'yyyy-MM-dd sample.log.2017-11-09
Ugentligt '.'yyyy-ww sample.log.2017-45
sample.log.2017-46
Månedligt '.'yyyy-MM sample.log.2017-10
sample.log.2017-11

Bemærk, at hvis udviklere ønsker at tilføje den bogstavelige tekst til datomønsteret, skal de undslippe det i et par enkelte anførselstegn. For f.eks.:

log4j.appender.Appender2.DatePattern="'_yyyy-MM-dd'.log'"

Lad os nu se, hvordan man implementerer de rullende logfiler i Log4j framework gennem forskellige konfigurationer, dvs. via egenskabsfil, XML fil og Programmatisk.

2.1 Konfigurer daglige rullende logfiler i egenskabsfilen

Her er et eksempel på en log4js egenskabskonfigurationsfil, som er konfigureret til daglige rullende logfiler.

log4j.properties

##### LOG4J daily rolling log files configuration #####
log4j.rootLogger=DEBUG, RollingAppender
log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppender.File=/log/sample.log
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n

2.2 Konfigurer daglige rullende logfiler i XML-fil

Her er et eksempel på en log4js XML konfigurationsfil, som er konfigureret til daglige rullende logfiler.

log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="RollingAppender" class="org.apache.log4j.DailyRollingFileAppender">
       <param name="File" value="/log/sample.log" />
       <param name="DatePattern" value="'.'yyyy-MM-dd" />
       <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="[%p] %d %c %M - %m%n" />          
       </layout>
    </appender>
    <root>
        <priority value="DEBUG" />
        <appender-ref ref="RollingAppender" />
    </root>
</log4j:configuration>

2.3 Konfigurer daglige rullende logfiler programmatisk

Følgende er et eksempel på Java-program, der programmæssigt konfigurerer Log4j til daglige rullende logfiler.

DynamicRollingLogFile.java

import org.apache.log4j.Appender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.DailyRollingFileAppender;
 
public class DynamicRollingLogFile {
 
    public static void main(String[] args) {
        // Creates Pattern Layout
        PatternLayout patternLayoutObj = new PatternLayout();
        String conversionPattern = "[%p] %d %c %M - %m%n";
        patternLayoutObj.setConversionPattern(conversionPattern);
 
        // Create Daily Rolling Log File Appender
        DailyRollingFileAppender rollingAppenderObj = new DailyRollingFileAppender();
        rollingAppenderObj.setFile("sample.log");
        rollingAppenderObj.setDatePattern("'.'yyyy-MM-dd");
        rollingAppenderObj.setLayout(patternLayoutObj);
        rollingAppenderObj.activateOptions();
 
        // Configure the Root Logger
        Logger rootLoggerObj = Logger.getRootLogger();
        rootLoggerObj.setLevel(Level.DEBUG);
        rootLoggerObj.addAppender(rollingAppenderObj);
 
        // Create a Customer Logger & Logs Messages
        Logger loggerObj = Logger.getLogger(DynamicRollingLogFile.class);
        loggerObj.debug("This is a debug log message");
        loggerObj.info("This is an information log message");
        loggerObj.warn("This is a warning log message");
    }
}

Det er alt for dette indlæg. God læring!!

3. Konklusion

Det er alt for at få udviklerne i gang med Log4j Eksempel på daglige rullende filer. Vi vil se nærmere på flere funktioner i de næste indlæg. Jeg håber, at denne artikel tjente dig, hvad end du ledte efter. Udviklere kan downloade eksempelapplikationen som et Eclipse-projekt i afsnittet Downloads.

4. Download Eclipse Project

Dette var et eksempel på Log4j Rolling File Eksempel.core java log4j

Java tag