Aus Datenschutzgründen dürfen wir in meinem Unternehmen Logfiles jedoch nicht länger als sieben Tage aufbewahren. Also die Generierung der nächsten nächsten Logdatei log.2010-09-11 sollte das Löschen von auslösen log.2010-09-04. Ist es möglich, ein solches Verhalten mit zu konfigurieren log4j? Wenn nicht, kennen Sie eine andere elegante Lösung für diese Art von Logging-Problem?
Dies ist kein Duplikat, RollingFileAppender ist nicht das, was OP will, da nur DailyRollingFileAppender Dateien täglich rotiert!
– Web-Gerät
31. Juli 2013 um 10:30 Uhr
Es gibt eine Lösung für Ihre Antwort mit log4j und Java – stackoverflow.com/a/58729657/7179509
– Maksym
6. November 2019 um 11:59 Uhr
Ich nehme an, Sie verwenden RollingFileAppender? In diesem Fall hat es eine Eigenschaft namens MaxBackupIndex die Sie einstellen können, um die Anzahl der Dateien zu begrenzen. Zum Beispiel:
Aber das würde die letzten 700 kB der Protokolldaten behalten, oder? Ich möchte die Protokolldaten der letzten 7 Tage unabhängig von der Größe der Protokolldatei aufbewahren.
– Asmaier
10. September 2010 um 9:35 Uhr
Da bekommt man tatsächlich eine Warnung MaxBackupIndex ist kein gültiges Mitglied von DailyRollingFileAppender. Meines Wissens gibt es keine Möglichkeit, dies mit log4j zu tun. Sie müssen die Tage selbst entfernen.
– cbmeeks
23. Mai 2013 um 14:48 Uhr
Ich glaube nicht, dass log4j.appender.R.MaxBackupIndex=1 nur 1 Protokolldatei auf dem Server behält. Ich hatte diese Einstellung, aber sehe, dass die alte Datei noch da ist.
Nachdem ich MaxBackupIndex konfiguriert hatte und festgestellt hatte, dass es mit org.apache.log4j.rolling.RollingFileAppender nicht funktionierte, habe ich mir die Quelle angesehen. Ich habe MaxBackupIndex nur in den Kommentaren gesehen. Ich neige dazu zu glauben, dass der Kommentar kopiert/eingefügt wurde und MaxBackupIndex nicht implementiert ist.
– Daniel Bower
25. September 2016 um 1:53 Uhr
Sie können Ihre Haushaltsführung in einem separaten Skript durchführen, das so eingestellt werden kann, dass es täglich ausgeführt wird. Etwas wie das:
Nur als Referenz: Ein anonymer Benutzer schlug eine Änderung vor, die Folgendes anhängt: „Um dies zu erweitern, wenn Sie große Protokolle haben / Speicherplatz sparen möchten, können Sie die rotierten Protokolle komprimieren und dann komprimierte Protokolle entfernen, die X Tage alt sind. Ich mache etwas wie: find /path/to/logs -type f -name “.Protokoll.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]” -exec bzip2 ‘{}’ \; && find /path/to/logs -type f -mtime +7 -name “.bz2″ -exec rm -f ‘{}’ \;”
– Vogel612
4. Oktober 2015 um 17:50 Uhr
PhilDin
Laut folgendem Beitrag geht das mit log4j nicht: Use MaxBackupIndex in DailyRollingFileAppender -log4j
Soweit ich weiß, sollte es diese Funktionalität in log4j 2.0 schaffen, aber diese Bemühungen wurden abgelenkt. Laut der Logback-Website ist Logback der beabsichtigte Nachfolger von log4j, daher sollten Sie die Verwendung in Betracht ziehen.
Es gibt eine API namens SLF4J, die eine gemeinsame API für die Protokollierung bereitstellt. Es lädt die eigentliche Protokollierungsimplementierung zur Laufzeit, sodass es je nach der von Ihnen bereitgestellten Konfiguration möglicherweise java.util.log oder log4j oder logback oder eine andere Bibliothek verwendet, die Protokollierungsfunktionen bereitstellen kann. Es wird ein wenig Vorarbeit geben, um von der direkten Verwendung von log4j zur Verwendung von SLF4J überzugehen, aber sie bieten einige Tools, um diesen Prozess zu automatisieren. Sobald Sie Ihren Code für die Verwendung von SLF4J konvertiert haben, sollte das Wechseln der Protokollierungs-Backends einfach eine Änderung der Konfigurationsdatei sein.
überfliegen
log4j2 unterstützt jetzt das Löschen alter Protokolle.
analysiert das ${baseDir}-Verzeichnis, das Sie unter dem Eigenschaften-Tag mit einer maximalen Tiefe von 2 definieren, wobei der Protokolldateiname mit “app-*.log.gz” übereinstimmt.
Protokolle löschen, die älter als 7 Tage sind, aber die letzten 5 Protokolle behalten, wenn Ihre letzten 5 Protokolle älter als 7 Tage sind.
Sie können im Konsolenprotokoll sehen, welche Dateien gelöscht würden, ohne die Dateien sofort zu löschen.
Dabei bin ich auf diesen Appender gestoßen hier das tut, was Sie wollen, es kann so konfiguriert werden, dass es eine bestimmte Anzahl von Dateien behält, die nach Datum verschoben wurden.
Bearbeiten: Nachdem Sie diese besorgniserregende Aussage gelesen haben:
Bei DailyRollingFileAppender wurden Synchronisationsprobleme und Datenverlust beobachtet. Der log4j-Extras-Begleiter enthält Alternativen, die für neue Bereitstellungen in Betracht gezogen werden sollten und die in der Dokumentation für org.apache.log4j.rolling.RollingFileAppender erörtert werden.
aus der obigen URL (was ich vorher nie realisiert habe), dann die log4j-Extras scheint eine bessere Option zu sein.
Danke für den Link! Tolles Paket!
– Daniel Widdis
6. Oktober 2014 um 3:52 Uhr
Benutzer444904
Es gibt noch eine andere Möglichkeit DailyRollingFileAppender. aber es fehlt die Funktion zum automatischen Löschen (7 Tage Protokoll behalten), nach der Sie suchen
Ich stoße auf etwas Anruf org.apache.log4j.CompositeRollingAppenderdie beide Merkmale des kombiniert RollingFileAppender (maxSizeRollBackups, Anzahl der Sicherungsdatei) und DailyRollingFileAppender (Rolle bis zum Tag).
Aber habe das nicht ausprobiert, scheint nicht die Standardfunktion von 1.2 branch log4j zu sein.
CompositeRollingAppender klang vielversprechend, aber ich habe mir seinen Code angesehen, und er implementiert (noch!) das Löschen alter Dateien nur beim Rollover von Dateien basierend auf der Größe, nicht beim Rollover basierend auf dem Datum. Schade, denn das sollte nicht schwer umzusetzen sein.
– Teemu Leisti
23. März 2017 um 9:20 Uhr
10555900cookie-checkWie konfiguriere ich log4j, um nur Protokolldateien für die letzten sieben Tage aufzubewahren?yes
Dies ist kein Duplikat, RollingFileAppender ist nicht das, was OP will, da nur DailyRollingFileAppender Dateien täglich rotiert!
– Web-Gerät
31. Juli 2013 um 10:30 Uhr
Es gibt eine Lösung für Ihre Antwort mit log4j und Java – stackoverflow.com/a/58729657/7179509
– Maksym
6. November 2019 um 11:59 Uhr