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.