2016-05-03 13 views
0

Ich habe mit der TimeBased Triggering Policy in meinem RollingFileAppender zu tun.Log4j2 TimeBased Triggering Policy

In dem manual heißt es:

Wie oft ein Überschlag auf die spezifischsten Zeiteinheit im Datum Muster basiert auftreten soll

Was ist die spezifische Zeiteinheit? Ist es der erste oder der letzte Parameter? Ich möchte die Datei einmal pro Woche Rollover.

Hier ist mein Code:

<RollingFile name="RollingFile" fileName="${baseDir}/giba.log" filePattern="${baseDir}/giba-%d{w}-%i.log"> 
    <PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss.SSS} [%t] %-5level - %msg%n"/> 
    <Policies> 
     <TimeBasedTriggeringPolicy interval="7" modulate="true" /> 
    </Policies> 
     <DefaultRolloverStrategy> 
      <Delete basePath="${baseDir}" maxDepth="0"> 
       <IfFileName glob="*.log" /> 
       <IfLastModified age="7d" /> 
      </Delete> 
     </DefaultRolloverStrategy> 
</RollingFile > 
+0

Es heißt weiter "Zum Beispiel, mit einem Datumsmuster mit Stunden als das spezifischste Element und und Erhöhung von 4 Rollovers würde alle 4 Stunden auftreten. Der Standardwert ist 1." - Was nicht wirklich spezifiziert, was sie mit "am spezifischsten" meinen. Ich verstehe es wie "Kleinste". Im Sinne von "Minuten sind spezifischer als Stunden" ... – Fildor

Antwort

2

meisten bestimmte Zeiteinheit bedeutet die kleinste. Ihr Dateimuster verwendet 'w', so dass es wöchentlich rollt. Sie haben jedoch ein Intervall von 7, was bedeutet, dass Sie die Datei in dieser Woche sieben Mal rollen lassen möchten.

Ehrlich gesagt möchte ich die TimeBasedRolloverStrategy ablehnen. Es ist verwirrend und bestimmt nur, ob es als Teil des Schreibens eines Protokollereignisses ausgeführt werden soll. Die CronTriggeringPolicy verwendet einen Cron-Ausdruck und verlässt sich daher nicht auf das Dateimuster. Es wird auch von einem Scheduler-Thread gesteuert, so dass es passieren wird, ob etwas protokolliert wird oder nicht.