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.
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:
FileAppender
, das die von DailyRollingFileAppender
geliehene Logik verwendet, um die Berechnung durchzuführen 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.
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 .
Hier ist mein Appender XML Snippet:
%Vor%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 Ссылка
hinzuund 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.
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%Mit logback können Sie den RollingFileAppender ableiten.
%Vor%Verwenden Sie dann diesen Appender als Appender mit einer Rolling Policy
%Vor%Weitere Details hier