2017-07-28 1 views
1

Ich würde Ihren Rat benötigen, da ich Log4j nicht kenne. Ich habe ein Java-Projekt mit Maven. Meine Konfiguration ermöglicht es mir, nur eine Protokolldatei pro Tag zu haben. Also gerade jetzt, wenn ich meine Anwendung 2x hintereinander ausführen, wird die Protokolldatei durch den zweiten Lauf geplagt. Ich werde nie ein Protokoll vom ersten Lauf haben. Ich möchte in der Lage sein, eine neue Protokolldatei jedes Mal zu erhalten, wenn ich meine Anwendung ausführe.Log-Datei ist durch den zweiten Lauf geplagt, wenn ich meine Java-Anwendung 2x hintereinander

Dies ist, wie ich meine Anwendung über die Befehlszeile:

java -cp .;MyProject.jar com.data.utils.project.main.Main > .\log\log_total_%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%.txt

Benannt eine Protokolldatei erzeugt: log_total_20170728.txt

ich log4j dependancy in meiner pom.xml-Datei:

Unten ist mein log4j.xml Inhalt.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > 
<log4j:configuration> 
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601} %-5p %C{2}:%L - %m%n" /> 
     </layout> 
    </appender> 
    <appender name="logfile" class="org.apache.log4j.RollingFileAppender"> 
     <param name="File" value="log/log_total.log" /> 
     <param name="MaxFileSize" value="1000KB" /> 
     <param name="MaxBackupIndex" value="5" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601} %-5p %C{2}:%L - %m%n" /> 
     </layout> 
    </appender> 
    <root> 
     <priority value="INFO"/> 
     <appender-ref ref="stdout" /> 
    </root> 
</log4j:configuration> 

Antwort

0

Um eine neue Protokolldatei nach jedem Lauf zu bekommen, wird jeder Logdateiname haben in gewisser Weise einzigartig sein, damit es nicht überschrieben bekommt. Der einfachste Weg besteht darin, dem Dateinamen des Protokolls einen Zeitstempel hinzuzufügen. Die folgende Modifikation fügt Stunden, Minuten, Sekunden und Millisekunden in die Protokolldateiname:

java -cp .;MyProject.jar com.data.utils.project.main.Main > 
.\log\log_total_%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%.txt 

Das resultierende Logdateiname etwas sollte wie folgt aussehen:

log_total_20170728_15140437.txt 
Verwandte Themen