2017-03-24 2 views
3

Ich benutze den unten stehenden Appender und ich konnte sehen, dass der Rollback auf einmal in jeder Stunde stattfindet.logback löscht die Logs vor dem MaxHistory beim stündlichen Rollback

Aber ich erwähnte die <maxHistory> als 10 Tage. Aber ich konnte sehen, dass die Logs am Ende eines jeden Tages automatisch gelöscht werden.

Aber die Erwartung ist, die Protokolldateien für maximal 10 Tage zu behalten.

<appender name="TIME_BASED_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>c:/logs/timeBasedlogFile.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">   
     <fileNamePattern>c:/logs/timeBasedlogFile.%d{yyyy-MM-dd_HH}.log</fileNamePattern> 
     <maxHistory>10</maxHistory> 
    </rollingPolicy> 
    <encoder> 
     <pattern>%relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
    </encoder> 
</appender> 

Wenn ich täglich Rollover verwenden, dann könnte ich in <maxHistory>

erwähnt die die gewalzten über Protokolle erhalten bleiben für die Anzahl der Tage zu sehen Ist die maxHistory Arbeit nur für den täglichen Überschlags?

Antwort

4

Das Element maxHistory gibt die Anzahl der gerollten Dateien im Verlauf an.
Wenn Sie <maxHistory>10</maxHistory> wählen, bedeutet das, dass Sie eine Historie für 10 Dateien haben könnten.

In Ihrem Fall geben Sie die Stunde als Granularität für das Rollen an. Das bedeutet, wenn Ihre Anwendung jede Stunde protokolliert, ist der Verlauf nach 10 Stunden voll und ältere Verlaufsprotokolle werden gelöscht.

Mit Ihrer hour rollende Dateikonfiguration, genau 10 Tage als Geschichte zu haben, ist weit davon entfernt, offensichtlich zu sein, da Ihre Anwendung einige Stunden und sogar einige Tage entfernt sein könnte.

In der Tat, wenn Sie die Granularität der Stunden rolling halten möchten, sollten Sie die Geschichte in Stunden und nicht Tagen angeben: Sie müssen beide ausrichten.

Zum Beispiel, wenn man bedenkt, dass die Anwendung auf 12 Stunden am Tag, könnten Sie 120 als history Wert (12 Stunden * 10 Tage) angeben, etwas in der Nähe von 10 Tage haben.
Wenn Sie die Häufigkeit von Protokollen nicht beherrschen und sicherstellen möchten, dass Sie keine Historie mit weniger als 10 Tagen haben, verwenden Sie 240 als history Wert (24 Stunden * 10 Tage).
Der einzige Nachteil: Wenn die Anwendung nicht jede Stunde eines jeden Tages protokolliert, erhalten Sie mehr Geschichte nach Bedarf.

Wenn ich täglich Roll verwenden dann konnte ich sehen, die die gewalzten über Protokolle sind für die Anzahl der Tage in <maxHistory>

Ja erwähnt beibehalten, da wie erläutert, die Granularität des maxHistory Wert abhängt, die Walzzeit Granularität.

+0

Danke. Es funktioniert gut, wenn ich als 240 halte (10 Tage * 24 Stunden) –

+0

Logback löscht die Dateien nicht sogar nach 240 Stunden (ich meine 10 Tage)? –

Verwandte Themen