logrotate ist das Standardwerkzeug unter Linux, um Logdateien automatisch zu rotieren. Ohne Rotation wachsen Logs unbegrenzt, füllen die Festplatte und erschweren die Fehlersuche. logrotate benennt alte Dateien um, komprimiert sie und verwirft sie nach einer eingestellten Anzahl — im Hintergrund, ohne manuelles Eingreifen.
So funktioniert die Rotation
logrotate läuft in der Regel einmal täglich über einen Eintrag in cron.daily oder als Cron- beziehungsweise systemd-Timer. Dabei wird /var/log/syslog zu syslog.1, syslog.1 zu syslog.2.gz und so weiter; eine neue leere Datei entsteht automatisch. Die globale Konfiguration steht in /etc/logrotate.conf, einzelne Dienste legen eigene Regeln in /etc/logrotate.d/ ab.
Wichtige Direktiven
daily,weekly,monthly— Zeitabstand der Rotation.rotate N— wie viele alte Versionen aufgehoben werden.compress— alte Logs mit gzip komprimieren;delaycompressverschiebt das Komprimieren um einen Zyklus.missingok— keine Fehlermeldung, wenn die Datei fehlt;notifempty— nicht rotieren bei leerer Datei.copytruncate— Datei kopieren und leeren (sinnvoll bei Diensten, die ihre Logdatei offen halten).postrotate…endscript— Befehle nach der Rotation ausführen, etwa ein Reload des Dienstes.maxsize/size— zusätzlich nach Größe rotieren.
Beispiel
/var/log/nginx/access.log {
weekly
rotate 8
compress
missingok
notifempty
postrotate
/usr/sbin/nginx -s reopen
endscript
}
Praxis-Tipps
logrotate -d /etc/logrotate.confzeigt im Debug-Modus, was passieren würde, ohne etwas zu ändern.logrotate -f /etc/logrotate.conferzwingt eine Rotation sofort.- Logrotation ist Teil eines sauberen Logging-Konzepts: Syslog sammelt die Meldungen, logrotate begrenzt ihren Platz.
- Systemd-Journal-Dateien (journalctl) rotiert das Journal selbst über Größenlimits — logrotate ist für klassische Datei-Logs zuständig.