2017-02-21 5 views
0

Momentan verwende ich log4j für die Protokollierung. Es erzeugt die Protokolldatei perfekt. Das Problem ist jedoch: Jedes Mal, wenn ich mein Programm starte, werden neue Protokolle, die generiert werden, an bereits generierte Protokolle in der gleichen Datei angehängt. Unten ist mein log4j-Eigenschaftsdatei:Wie erstelle ich die Protokolldatei jedes Mal, wenn ich mein Java-Programm mit Log4j starte?

log4j.rootCategory = INFO, LOGFILE

log4j.logger.org.apache.axis.enterprise = FATAL, LOGFILE

log4j.appender. LOGFILE = org.apache.log4j.DailyRollingFileAppender

log4j.appender.LOGFILE.File = applicationLogs.txt

log4 j.appender.LOGFILE.Append = true

log4j.appender.LOGFILE.Threshold = DEBUG

log4j.appender.LOGFILE.DatePattern = \ u2018. \ u2019yyy-MM-dd

log4j.appender .LOGFILE.layout = org.apache.log4j.PatternLayout

log4j.appender.LOGFILE.layout.ConversionPattern =% d {yyyy-mM-dD HH : mm: ss}% C {1} [% P] % m% n

Ich muss jedes Mal, wenn ich mein Programm starte, eine neue Protokolldatei erstellen. Wie geht das? Diese Datei ist perfekt. Aber ich möchte eine leichte Modifikation.

+2

Versuche 'zu machen log4j.appender.LOGFILE.Append' falsch. Bei dieser Einstellung wird die vorherige Protokolldatei nicht angefügt, sondern überschrieben. – SachinSarawgi

Antwort

2

Nehmen Sie folgende Schritte:

1. log4j.appender.LOGFILE.File=applicationLogs_${current_date}.txt

2. log4j.appender.LOGFILE.Append=false.

Für current_date zu arbeiten, um Ihre Hauptklasse bearbeiten und fügen Sie folgenden Code:

static{ SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy hhmmss"); System.setProperty("current_date", dateFormat.format(new Date())); }

Erste Einstellung eine neue Protokolldatei jedes Mal, wenn Ihr Programm je nach aktuellem Datum beginnt schaffen wird (so dass Sie nicht verlieren alte Logs) und bei der zweiten Einstellung wird es nicht an Ihre alte Datei angehängt, sondern überschrieben.

Sie können eine der Einstellungen verwenden. Der erste ist vorzuziehen, da Sie Ihre alten Protokolle nicht verlieren.

0

In Ihrem Code hinzufügen, so etwas wie unten:

String today= Calendar.getInstance() 
    .getTime() 
    .toString() 
    .replaceAll(" ", "_") 
    .replaceAll(":", ""); 
System.setProperty("logfilename", today); 

und in der Eigenschaftsdatei:

log4j.appender.file.File=C:\\${logfilename}.log 
Verwandte Themen