Protokolle wachsen ewig, solange sie niemand kürzt. Eine volle Platte reißt Datenbank, Webserver und Sicherungen gleichzeitig mit, und sie ist eine der häufigsten Ursachen für einen unerklärten Ausfall — siehe Protokolle, die die Platte füllen.
Eine Regel für Ihre eigene Anwendung
# /etc/logrotate.d/site
/var/www/site/storage/logs/*.log {
daily
rotate 14
size 100M
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload php8.3-fpm > /dev/null 2>&1 || true
endscript
}
Die Option, die über den Erfolg entscheidet
Ein Prozess, der eine Protokolldatei offen hält, schreibt weiter in die ROTIERTE Datei. Die Platte füllt sich genau wie vorher, während das aktuelle Protokoll leer bleibt und alles in Ordnung aussieht. Laden Sie den Dienst in postrotate neu, wie oben, oder verwenden Sie copytruncate.
copytruncate # copy the file, then empty the original in place
# simpler, and loses the few lines written during the copy
Testen, ohne einen Tag zu warten
sudo logrotate -d /etc/logrotate.d/site # dry run, prints what it would do
sudo logrotate -f /etc/logrotate.d/site # force it now
ls -la /var/www/site/storage/logs/
Das Journal rotiert getrennt
journalctl --disk-usage
sudo journalctl --vacuum-size=500M
systemd hält seine eigenen Protokolle unter eigenen Grenzen — siehe Das System-Journal lesen.
Und behalten Sie die Platte im Auge
df -h
sudo du -xh /var/log /var/www --max-depth=2 2>/dev/null | sort -h | tail -15
Warnen Sie bei 80 % statt bei 95 %. Zwischen diesen beiden Zahlen bleibt Zeit zu handeln; nach 95 % kann ein großes Protokoll den Rest in Minuten auffüllen.