Zeitbasierte Trigger-Richtlinie in log4j2

9

Ich versuche, neue Protokolldateien stündlich zu erstellen. Ich verwende TimeBasedTriggerringPolicy von lo4j2 in RollingFileAppender. Unten ist der Beispiel-XML-Konfigurationscode, den ich von der offiziellen log4j2-Seite genommen habe.

%Vor%

Im Attribut interval habe ich 1 gesetzt, was 1 Stunde bedeutet. Aber trotzdem läuft meine Datei nicht alle 1 Stunde.

Bitte helfen Sie mir, einen Fehler zu finden.

Hinweis: Ich habe beta9 von log4j2 (die neueste)

enthalten     
user1890780 10.10.2013, 19:05
quelle

3 Antworten

13

1 bedeutet hier 1 Tag und nicht 1 Stunde. Ich habe manuell mit der Konfiguration unten getestet.

%Vor%

Für manuelle Tests ändere ich Systemdatum und -zeit. Versuchen Sie es zunächst einmal mit einer Stunde. Die Protokolldateien werden generiert, aber nicht wie erwartet. Dann ändern Sie das Systemdatum, erhöhen um 1 Tag und sehen dann die Ergebnisse.

Angenommen, die letzte Protokolldatei (abc.log) am Tag 29 bis Oktober ist 50 KB groß. Die Konfigurationsgröße beträgt 100 KB. Wenn wir den Tag ändern (um 1 Tag erhöhen) und dann laufen. Dann wird die letzte Datei umbenannt in 29-Oct- (irgendeine Sequenznummer) .log (50 KB Datei, wie sie kopiert wird) und eine neue Datei wird mit abc.log

erstellt

Ich habe das mit einem einfachen Servlet mit einer Konfiguration unterhalb von web.xml versucht

%Vor%

Behalte log4j2.xml im src-Ordner. log4j2.xml wird nicht geladen, wenn wir es im Klassenpfad behalten.

    
Zubin Shah 30.10.2013, 10:22
quelle
2

Sie haben eine nicht leere Protokolldatei (sonst gibt es nichts zu überrollen)?

Beachten Sie, dass der Name zwar "TimeBased ..." lautet, aber nicht zum angegebenen Zeitpunkt, sondern beim ersten Protokollereignis, das nach Überschreiten des Zeitgrenzwerts eintrifft, nicht überschritten wird. Können Sie es mit einem kleinen Testprogramm versuchen, das nach etwa 61 Minuten etwas protokolliert und überprüft, ob das Problem weiterhin auftritt?

Wenn es mit dem obigen Testprogramm nicht rollt, haben Sie möglicherweise einen Fehler gefunden. In diesem Fall wenden Sie sich bitte an den Log4j-Issue-Tracker. (Stellen Sie sicher, dass Sie das Testprogramm anhängen, das das Team verwenden kann, um das Problem zu reproduzieren).

    
Remko Popma 10.10.2013 22:56
quelle
2

Wie bereits erwähnt, wird der Intervallwert im Kontext eines Musters interpretiert, das als Teil von filePattern angegeben ist. Es beginnt mit dem niedrigsten Nennwert. Wenn das Muster beispielsweise S enthält, wird die Frequenz in Millisekunden angegeben. Es unterstützt das Datumsmuster, das im Detail als Teil von SimpleDateFormat java doc Ссылка

    
rajnish 01.10.2014 20:24
quelle