Protokolle sowohl nach Größe als auch nach Uhrzeit rollen

8

Ich benutze RollingFileAppender von log4j 1.2.16 , die Log-Dateien rollt, wenn sie eine bestimmte Größe erreichen. Jetzt möchte ich Log-Dateien täglich und rollen, wenn sie eine bestimmte Größe erreichen. So wird es eine oder mehrere Protokolldateien pro Tag geben.

Zum Beispiel

%Vor%

Gibt es einen Appender von der Stange?

    
Michael 18.12.2012, 15:18
quelle

3 Antworten

8

Es gibt tatsächlich zwei Möglichkeiten:

  1. Verwenden Sie LogBack mit seiner Größe und Zeit auslösende Richtlinie: Ссылка
  2. es gibt TimeAndSizeRollingAppender für Log4J von hier: Ссылка

Beachten Sie, dass beide Optionen die Umbenennung von Dateien verwenden. Berücksichtigen Sie dies sorgfältig, wenn ein anderes Skript diese Dateien automatisch verschiebt. Das Umbenennen von Dateien ist riskant, wenn zwei Prozesse mit derselben Datei arbeiten.

Ich schlage vor, den Namen der unveränderbaren Protokolldatei direkt in das Muster zu schreiben: myapp- {dd.MM.yyyy}. {X} .log. Auf diese Weise schließt das "Rollen" einfach eine Datei und öffnet eine neue Datei. Keine Umbenennungen Keine Hintergrundthreads

    
David Peleg 07.01.2013, 18:45
quelle
3

Die schnelle Antwort ist "Nein". Schau dir log4js javadoc an: Ссылка

Es gibt nur zwei sofort einsatzbereite Dateiapplikatoren: DailyRollingFileAppender und RollingFileAppender (und die erste wird nicht empfohlen, da es Synchronisationsprobleme hat).

Um das zu erreichen, was Sie wollen, sollten Sie einen eigenen Appender erstellen, den RollingFileAppender erweitern und ihn modifizieren, um die Datei zu rollen, wenn sich der Tag ändert. Die Änderung wäre in der Methode:

%Vor%

Sie können seine Quelle hier sehen: Ссылка (Zeile 274 ).

Sie müssen nur den Code kopieren und einfügen und den if-Aufruf von rollOver entsprechend Ihren Anforderungen ändern.

    
izaera 18.12.2012 15:35
quelle
2

Unter der Konfiguration wird xml die Aufgabe erledigen: JAR erforderlich: log4j-rolling-appender-20150607-2059

%Vor%     
brajesh kumar 15.04.2016 08:18
quelle