Wie bekomme ich Log4j, um alte rotierende Protokolldateien zu löschen? Ich weiß, dass ich automatisierte Jobs (Cron für UNIX und geplante Aufgabe für Windows) einrichten kann, aber ich möchte es plattformübergreifend, und ich möchte es in unserer Anwendung Protokollkonfiguration als Teil unserer Anwendung, anstatt in separaten Code außerhalb in OS spezifische Skriptsprachen. Unsere Anwendung ist nicht in OS-Skriptsprachen geschrieben, und ich möchte diesen Teil nicht in ihnen verwenden.Wie kann ich Log4j löschen alte rotierende Protokolldateien zu löschen?
Antwort
RollingFileAppender tut dies. Sie müssen maxBackupIndex nur auf den höchsten Wert für die Sicherungsdatei setzen.
Protokolle rotieren aus einem bestimmten Grund, so dass Sie nur so viele Protokolldateien speichern. In log4j.xml können Sie diese zu Ihrem Knoten hinzufügen:
<param name="MaxBackupIndex" value="20"/>
Der Wert sagt log4j.xml nur 20 Dateien gedreht Protokoll halten um. Sie können dies auf 5 begrenzen, wenn Sie wollen oder sogar 1. Wenn Ihre Anwendung nicht so viele Daten protokolliert und Sie 20 Protokolldateien aus den letzten 8 Monaten haben, aber Sie brauchen nur eine Woche im Wert von Logs, dann denke ich Sie müssen Sie Ihre Log4j.xml "MaxBackupIndex" und "MaxFileSize" Parameter optimieren.
Alternativ, wenn Sie eine Eigenschaftsdatei (anstelle des xml) verwenden und wollen 15 Dateien speichern (zum Beispiel)
log4j.appender.[appenderName].MaxBackupIndex = 15
Funktioniert das mit DailyRollingFileAppender? – rogerdpack
Es gibt keinen Standardwert zum Steuern des Löschens alter Protokolldateien, die von DailyRollingFileAppender erstellt wurden. Sie können jedoch einen eigenen angepassten Appender schreiben, der alte Protokolldateien auf die gleiche Weise löscht wie das Festlegen von maxBackupIndex für RollingFileAppender.
Einfache Anleitung here
Von 1:
Wenn Sie den Apache Log4J DailyRollingFileAppender für eine tägliche Protokolldatei verwenden möchten, können Sie die maximale Anzahl von Dateien möchten benötigen, um zu spezifizieren, die sollte gehalten werden. Genauso wie RollingFileAppender unterstützt maxBackupIndex. Die aktuelle Version von Log4j (Apache log4j 1.2.16) bietet jedoch keinen Mechanismus zum Löschen alter Protokolldateien, wenn Sie DailyRollingFileAppender verwenden. Ich habe versucht, kleine Änderungen in der ursprünglichen Version von DailyRollingFileAppender vorzunehmen, um die Eigenschaft maxBackupIndex hinzuzufügen. Es wäre also möglich, alte Protokolldateien zu bereinigen, die für die zukünftige Verwendung möglicherweise nicht benötigt werden.
- 1. Plesk löschen IIS-Protokolldateien?
- 2. Löschen von Protokolldateien mit EntLib
- 3. Löschen von Protokolldateien mit Powershell
- 4. SQLite löschen alte Daten
- 5. taskwarrior, alte wiederkehrende Aufgaben löschen
- 6. Log4j Protokolldateien nicht gefunden
- 7. Wie bekomme ich AWstats, um alte Protokolldateien zu analysieren?
- 8. Alte IntelliTrace-Aufnahmen automatisch löschen
- 9. Mixpanel - Massen löschen alte Benutzer
- 10. , wie und wann alte Neo4j Transaktionsprotokolldateien löschen
- 11. wie in Eigenschaftsdatei zu schreiben, ohne alte Werte zu löschen
- 12. Mit ICS-Dateien kann ich alte Ereignisse löschen?
- 13. Wie kann ich Sonderzeichen löschen?
- 14. Wie mache ich Log4j beim Start ein Protokoll löschen?
- 15. Programmatically verschiedene Protokolldateien mit log4j
- 16. Alte Tests von der Ergebnisseite löschen
- 17. Wie kann ich den Tastaturcache auf iOS löschen/löschen?
- 18. Wie kann Log4j Protokolldateien nur bei Bedarf erstellen?
- 19. Alte Zweige in der Konsole löschen
- 20. KML und alte KML-Dateien löschen
- 21. , wie Dokumente zu löschen, die
- 22. Wie konfiguriere ich Logrotate, um meine Protokolldateien nach der Rotation nicht zu löschen?
- 23. XCode: Kann ich Testziele löschen?
- 24. Wie Viewstate zu löschen?
- 25. Wie master.dbo.sysprocesses zu löschen?
- 26. Wie stringstream zu löschen?
- 27. Wie kann ich eine Abfrage löschen?
- 28. Wie kann ich Ereignisabonnements in C# löschen?
- 29. Wie kann ich einen RabbitMq Austausch löschen?
- 30. Wie kann ich Memcache mit Capistrano löschen?
Gibt es eine Möglichkeit, dies mit DailyRollingFileAppender zu tun? –
Nein, nicht mit dem Standard - siehe Antwort von user3195649 unten. Glauben Sie, die Apache Extras für log4j haben etwas ähnliches. –
Entfernt dies auch alte Logfiles, die zuvor von DailyRollingFileAppender archiviert wurden (* .log.2016-09-12)? – mvdb