Logrotation ist keine serverweite Einstellung. Jeder Dienst bringt seine eigene Regel mit; alles von Hand Installierte — oder alles, was an einen ungewöhnlichen Ort schreibt — hat überhaupt keine und wächst, bis die Platte voll ist.

Das wachsende finden

du -h /var/log --max-depth=2 | sort -h | tail -15
ls -lhS /var/log/*.log | head

Es rotieren lassen

# /etc/logrotate.d/mysite
/var/www/site/storage/logs/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    create 0640 www-data www-data
}

Vierzehn Tage komprimiert sind eine gute Voreinstellung: genug, um die vergangene Woche zu untersuchen, klein genug, um es zu vergessen.

logrotate -d /etc/logrotate.d/mysite   # dry run, prints what it would do

Ein Protokoll, das in Stunden vollläuft

Das ist kein Rotationsproblem. Eine einzige Warnung, die sich bei jeder Anfrage wiederholt, schreibt an einem Tag Gigabytes — und sie zu rotieren löscht nur schneller die Spuren.

sort /var/log/nginx/error.log | uniq -c | sort -rn | head -5

Die oberste Zeile ist fast immer das ganze Problem: eine fehlende Datei, millionenfach angefragt, oder ein PHP-Hinweis auf jeder Seite.

Platz zu schaffen, indem Sie ein Protokoll löschen, in das ein Dienst gerade schreibt, gibt den Platz nicht frei — der Prozess hält den Dateizeiger. Kürzen Sie es stattdessen: : > /var/log/big.log
Rotieren Sie alles, was ausschlagen kann, nach Größe und nach Tag: size 100M neben daily fängt einen Ausreißer ab, bevor die Platte es tut.