2017-06-22 3 views
0

Ich verwende Logback in meinem Projekt. Ich habe das Problem, nur Protokolle des aktuellen Tages zu speichern. My logback appender config:Logbuch. Nur Protokolle des aktuellen Tages speichern

<appender name="appender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>log/log.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- daily rollover --> 
     <fileNamePattern>log/log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>512MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
     <maxHistory>1</maxHistory> 
    </rollingPolicy> 
    <encoder> 
     <charset>utf-8</charset> 
     <pattern>%d{dd-MM HH:mm:ss.SSS} [%thread] %-5level %logger{66} - %msg%n</pattern> 
    </encoder> 
</appender> 

Ich möchte Dateien sehen log.2017-06.22.0.zip, log.2017-06.22.1.zip .. wenn das aktuelle Datum 2017.06.22 ist. Alle vorherigen Protokolle müssen gelöscht werden. Wenn ich maxHistory auf 1 setze, sehe ich die Protokolle des aktuellen Tages und des vorherigen Tages. Bitte hilf mir.

+0

Was versuchen Sie zu erreichen? Was ist Ihr Geschäftsbedarf? Mit Ihrer Konfiguration erhalten Sie nur eine Verlaufsdatei mit einer maximalen Größe von 512 MB pro Datei. Wenn Ihre App mehr als 1 g Protokolle an einem Tag generiert, verlieren Sie Protokolle für den aktuellen Tag (wenn Sie eine tödliche Schleife eingeben, haben Sie schnell Protokolle mit Stacktraces und einer fehlenden Protokollzeile für die erste Ursache). Ähnlich, wenn Sie das Protokoll des letzten Tages löschen, wie werden Sie einen Fehler diagnostizieren, der um 23:59 vorkam? – lbndev

+0

@ibndev Ich brauche nur aktuelle Tag Log. Ich habe kein Problem, um einen Fehler zu diagnostizieren, der um 23:59 vorkam. Nur aktueller Tag. Von 0:00 bis 23:59 Uhr. Jetzt generiert meine App Protokolle mehr als 1g und ich habe viele Protokolle wie log.2017-06.22.0.zip, log.2017-06.22.1.zip .. Es ist in Ordnung für mich. –

Antwort

0

Leider mit der aktuellen Version von logback (1.2.3) Ich glaube nicht, dass dies möglich ist. Überprüfen Sie den Quellcode von ch.qos.logback.core.rolling.helper.TimeBasedArchiveRemover zu sehen, wie Parameter maxHistory verwendet wird:

// below is line 97 
void capTotalSize(Date now) { 
    long totalSize = 0; 
    long totalRemoved = 0; 
    for (int offset = 0; offset < maxHistory; offset++) { 
     // snip : execute removal 
     // notice that if you set maxHistory to 0 or -1 the loop contents will not be executed at all. 
    } 
    addInfo("Removed " + new FileSize(totalRemoved) + " of files"); 
} 

Sie können einen Feature-Request (oder eine PR) an die logback Projekt einreichen .

Verwandte Themen