Mein Ziel ist es, die von uWSGI erzeugten Logs zu rotieren, aber wenn die ursprüngliche Log-Datei gelöscht wird (nach der Komprimierung), wird sie nicht erneut erstellt.
Also dachte ich, dass die App einen graziösen Neustart des Master-Prozesses benötigt, nachdem die Datei gelöscht wurde. Ich benutze dieses RESTART-Skript:
%Vor%Die App startet neu, aber das Protokoll nicht.
Um die Logging-Arbeit wieder zu bekommen, muss ich den Prozess beenden und das START-Skript erneut ausführen, so dass eine andere Prozessnummer generiert wird und die Protokollierung wieder funktioniert.
Offensichtlich will ich nicht so hart STOP nur für rotierende Protokolle ...
Meine App ist mit Catalyst gebaut, der Server läuft mit Nginx und hier ist das uWSGI START Skript:
%Vor%Gibt es eine andere Möglichkeit, die App neu zu starten, ohne Verbindungen und Protokollierung zu verlieren?
Vielen Dank im Voraus: Migue
Sie haben verschiedene Ansätze:
1) copytruncate im logrotate-Skript, das funktioniert zuverlässig und ohne die Hilfe von uWSGI
2) uWSGI-Log-Rotation: --log-maxsize <bytes>
rotiert automatisch Logs, wenn eine bestimmte Größe erreicht ist
3) klassische Logrotation + Log-Reload, fügen Sie einfach --log-master
hinzu und starten Sie das Log-Reload mit Ссылка
Es gibt auch andere Ansätze (wie das Auslösen des Logs beim Öffnen einer Datei), aber die vorherige ist am häufigsten.