2017-05-12 6 views
0

Ich habe ein Python-Programm, das täglich ausgeführt wird. Ich verwende das Modul logging mit FileHandler, um Protokolle in eine Datei zu schreiben. Ich möchte, dass die Logs jedes Laufs in einer eigenen Datei mit einem Zeitstempel stehen. Ich möchte jedoch alte Dateien (sagen wir> 3 Monate) löschen, um zu vermeiden, die Festplatte zu füllen.Alte Python-Protokolldateien automatisch löschen

Ich habe mir RotatingFileHandler und TimedRototingFileHandler angeschaut, aber ich möchte nicht, dass die Protokolle eines einzelnen Laufs auf mehrere Dateien aufgeteilt werden, auch wenn ein einzelner Lauf Tage dauern würde. Gibt es dafür eine integrierte Methode?

+2

Sie könnten dies außerhalb von Python tun, verwenden Sie einfach einen Cron-Job, um 'find' (siehe z. B. http://Stackoverflow.com/a/13869000/3001761) hin und wieder auszuführen. Aber ich bin verwirrt von * "Ich möchte, dass die Logs jedes Tages in einer eigenen Datei sind" * vs. * "Ich möchte nicht, dass die Logs eines einzelnen Laufs auf mehrere Dateien aufgeteilt werden, selbst wenn ein einzelner Lauf ausgeführt werden sollte Tage"*. – jonrsharpe

+0

Danke. Ich suche jedoch nach einer Lösung innerhalb des Logging-Moduls. Ich habe für Klarheit geklärt. –

+0

@jonrsharpe cron wurde vor langer Zeit als veraltet eingestuft und hat in osx für viele Aufgaben nicht gut funktioniert. – JordanGS

Antwort

0

Holen Sie sich das Datum/die Uhrzeit. Sehen Sie dieses answer auf, wie man den Zeitstempel erhält. Wenn die Datei älter als das aktuelle Datum ist, um 3 Monate. Dann löschen Sie es mit

import os 
os.remove("filename.extension") 

Speichern Sie diese Datei auf py2exe, dann einfach über die Task-Scheduler Job beim Start ausgeführt.

Windows-: Öffnen Sie die Lauf Befehl und geben Sie Shell: startup, dann exe Platz hier drinnen.

Auf OSX: Die alte Art und Weise zu sein, um einen Cron-Job zu erstellen, funktioniert nicht in vielen Fällen aus meiner Erfahrung, aber immer noch versuchen zu arbeiten. Der neue empfohlene Weg von Apple ist CreatingLaunchdJobs. Sie können auch auf diese topic für eine detailliertere Erklärung verweisen.

+0

Danke für die Antwort, aber die Frage ist, wo das Logging-Modul selbst diese Art von Funktionalität unterstützt. Ein separates Programm zu erstellen, ist einfach genug. –

Verwandte Themen