Nach der Ausführung von logrotate
schreibt meine App weiter zu my_app.log.1
(das alte Protokoll, das später archiviert werden sollte) anstelle von my_app.log
.App schreibt in ".log.1" -Datei statt ".log" -Datei nach dem Ausführen von logrotate
Dies macht my_app.log
eine leere Datei, daher logrotate
läuft ohne Wirkung. Und my_app.log.1
weiter auf Gigabyte wachsen.
Ich benutze Ubuntu 12.04. Meine App ist eine Node.js-App, die pm2 verwendet. Folgende ist meine logrotate Konfiguration:
"/var/log/my_app/*.log" {
daily
size 50M
rotate 10
missingok
compress
delaycompress
notifempty
}
Ich weiß, ich notifempty
dort setzen, aber warum ist my_app.log.1
in erster Linie geschrieben?
Wenn die Anwendung die Protokolldatei während der Ausführung geöffnet hält, wirkt sich dies nicht auf den geänderten Dateinamen aus. Es schreibt weiter in die Datei. 'logrotate' kann konfiguriert werden (in einem 'Postrotate'-Skript), um die Anwendung neu zu starten (oder ein' HUP'-Signal zu senden, wenn die Anwendung darauf reagiert), nachdem sie die Dateien umbenannt hat. Es gibt Beispiele in der Dokumentation. – axiac