Python hat sein eigenes RotatingFileHandler
, das Protokolldateien automatisch rotieren soll. Als Teil einer Linux-Anwendung, die ihre Protokolldatei alle paar Wochen / Monate rotieren müsste, frage ich mich, ob sie anders ist als eine Konfigurationsdatei in logrotate.d
und stattdessen eine WatchedFileHandler
.
Gibt es einen Unterschied in ihrer Funktionsweise? Ist eine Methode sicherer, effizienter oder besser als die andere?
Was ist die Zielgruppe Ihres Programms?
Wenn Sie eine Desktopanwendung erstellen und die meisten Benutzer die Protokolle nicht lesen können, sollten Sie sie behandeln. Sie können nicht nur rotieren, sondern auch alte löschen Ich möchte die Festplatte des armen Benutzers nicht füllen!
Wenn die Zielgruppe jedoch erfahrene UNIX-Systemadministratoren ist, müssen Sie einen anderen Ansatz wählen.
Sysadmins benötigen Funktionen, die Sie nicht erwarten können. Senden Sie sie per E-Mail, schreiben Sie sie in Append-only-Speicher, Sie nennen sie. Für diese Zielgruppe ist es am besten, wenn Ihre Protokollierung so flexibel wie möglich ist. Flexibel (in UNIX) bedeutet einfach - schreiben Sie einfach in eine Datei und betrachten Sie sie als erledigt.
Außerdem möchten Systemadministratoren nicht noch einmal lernen, wie die Protokollierung erneut durchgeführt wird . Auch wenn Sie diese Art von Funktion bereitstellen möchten, stellen Sie sicher, dass der Standardwert innerhalb dieser Annahme angemessen ist.
Endlich. Tdelaney hat einen wichtigen Punkt angesprochen: Der Standard FileHandler
beachtet die Datei, an die er schreibt, nicht besonders. Sie sollten einen WatchedFileHandler verwenden, der speziell für diesen Zweck geschrieben wurde
RotatingFileHandler lässt eine Protokolldatei auf Größe N wachsen und rotiert dann sofort und automatisch zu einer neuen Datei.
logrotate.d läuft normalerweise einmal pro Tag. Wenn Sie die Größe einer Protokolldatei einschränken möchten, ist logrotate.d nicht besonders hilfreich, da sie nur periodisch ausgeführt wird.
Tags und Links python logrotate log-rotation