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?
Es gibt tatsächlich zwei Möglichkeiten:
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
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.
Unter der Konfiguration wird xml die Aufgabe erledigen: JAR erforderlich: log4j-rolling-appender-20150607-2059
%Vor%Tags und Links java log4j appender rollingfileappender