So konfigurieren Sie einen log4j-Dateiappender, der die Protokolldatei alle 15 Minuten aufrollt

8

Ich verstehe, dass ich einen DailyRollingFileAppender verwenden kann, um die Protokolldatei jeden Monat, Tag, halben Tag, jede Stunde oder jede Minute zu rollen. Aber wie kann ich Log4j konfigurieren, um die Protokolldatei alle 15 Minuten zu rollen.

Wenn dies nicht durch Konfiguration möglich ist, schlagen Sie mir bitte vor, wie Sie log4j's Dateiappender erweitern können, um dies zu erreichen.

Danke und Grüße.

    
vbcr 01.02.2011, 01:31
quelle

5 Antworten

4

Das Javadoc für DailyRollingFileAppender in Log4J zeigt an, dass die Zeit Basiertes Rolling tritt nur bei Rollover auf Einheitenbasis auf (Tag, Woche, Monat usw.). Das würde bedeuten, dass Sie mit diesem Muster am ehesten in der Lage sind, '.'yyyy-MM-dd-HH-mm zu erhalten, was sich jede Minute wiederholen würde.

Meine Empfehlung wäre eine der folgenden:

  • Da Sie in einem festen Intervall arbeiten, schreiben Sie ein benutzerdefiniertes FileAppender , das die von DailyRollingFileAppender geliehene Logik verwendet, um die Berechnung durchzuführen
  • Wenn Sie etwas Flexibilität haben, wechseln Sie von Log4J zu LOGBack , und schreiben Sie eine benutzerdefinierte RollingPolicy , die vom LOGBack geliehene Logik verwendet Zeitberechnungen (die denen in Log4J sehr ähnlich sind)

Übrigens, wenn Sie sich für Letzteres entscheiden, würde ich empfehlen, dass Sie das Coding für die API SLF4J in Betracht ziehen und LOGBack verwenden (oder Log4J) als zugrunde liegende Implementierung.

    
mlschechter 01.02.2011 02:42
quelle
3

Hier ist Code, den ich für stündlich verwende. Sie können es alle 15 Minuten ändern - siehe Methode nextCalendar() . Dieser Code basiert auf DatedFileAppender .

%Vor%

Hier ist mein Appender XML Snippet:

%Vor%     
JoshDM 17.10.2011 14:56
quelle
1

Ich weiß, es ist spät, um zu antworten, aber unter Lösung wird Ihnen helfen, und andere Benutzer, die die gleiche Frage suchen und in diesem Thread stecken.

Ich habe DailyRollingFileAppender.java so geändert, dass die Zeitintervallklausel in die Dateirolle eingefügt wird, damit der Benutzer das Minutenintervall festlegen kann, in dem das Rollen ausgeführt werden muss.

Fügen Sie eine Datei von hier Ссылка

hinzu

und konfigurieren Sie so, tim Intervall kann Werte von 60 Faktoren haben [1,2,3,4,5,6,10,12,15,20,30,60] log4j.appender.mtlog_api11.DatePattern = '.' mmHHMMddyyyy log4j.appender.mtlog_api11.TimeInterval = 10

wird in anderen DatePattern normal funktionieren als oben angegeben.

    
Abhey Gupta 06.03.2013 07:41
quelle
1

Ich habe diesen Appender erstellt. Es ist eine Kopie von DailyRollingFileAppender nur mit wenigen Änderungen. Zuerst entferne ich den Typ HALF_DAY (hier macht es keinen Sinn) und füge eine Variable timeInterval hinzu. Nun hängt das log auf die Datei jedes x etwas von datePatter ab. Zum Beispiel:

dieses Protokoll alle 2 Minuten

%Vor%

dieses Protokoll alle 3 Stunden

%Vor%

CustomRollingFileAppender:

%Vor%     
hudi 12.02.2014 14:19
quelle
0

Mit logback können Sie den RollingFileAppender ableiten.

%Vor%

Verwenden Sie dann diesen Appender als Appender mit einer Rolling Policy

%Vor%

Weitere Details hier

    
Ronan Quillevere 05.08.2015 09:25
quelle

Tags und Links