Logrotation unter Debian für benutzerdefinierte Logdateien
Übersicht
Damit Logdateien nicht unkontrolliert wachsen und wertvollen Speicherplatz belegen, sollte ihre Größe regelmäßig begrenzt und ältere Einträge archiviert werden.
Unter Debian übernimmt diese Aufgabe das Tool logrotate.
Diese Dokumentation beschreibt, wie benutzerdefinierte Logdateien (z. B. von eigenen Anwendungen oder Skripten) in die systemweite Logrotation integriert werden können.
Beispiel-Szenario
Eine Anwendung schreibt ihre Logdateien unter:
/usr/local/share/rpxconf/log_rpxconf/rpxconf.log
/usr/local/share/rpxconf/log_apache/access.log
/usr/local/share/rpxconf/log_apache/error.log
Diese Logdateien sollen: - täglich rotiert werden, - alte Versionen automatisch komprimiert werden, - maximal 14 Versionen behalten, - nach der Rotation neu erstellt werden, - bei Bedarf den zugehörigen Dienst (z. B. Apache) neu laden.
Logrotate-Konfiguration
Erstelle eine eigene Logrotate-Konfigurationsdatei unter /etc/logrotate.d/rpxconf
:
sudo vi /etc/logrotate.d/rpxconf
/usr/local/share/rpxconf/log_rpxconf/rpxconf.log
/usr/local/share/rpxconf/log_apache/access.log
/usr/local/share/rpxconf/log_apache/error.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 root adm
sharedscripts
postrotate
# Wenn Apache beteiligt ist:
if systemctl is-active --quiet apache2; then
systemctl reload apache2 > /dev/null 2>&1 || true
fi
endscript
}
Parameter-Erklärung
Parameter | Beschreibung |
---|---|
daily | Rotiert die Logs einmal täglich |
rotate 14 | Bewahrt 14 ältere Logversionen auf |
compress | Komprimiert alte Logs mit gzip |
delaycompress | Verzögert die Kompression um einen Tag, um Konflikte mit offenen Logs zu vermeiden |
missingok | Ignoriert fehlende Logdateien (kein Fehler) |
notifempty | Rotiert nur, wenn Logdateien nicht leer sind |
create 0640 root adm | Erstellt neue Logdateien mit entsprechenden Berechtigungen |
sharedscripts | Führt die nachfolgenden Skripte nur einmal aus, auch wenn mehrere Dateien rotiert werden |
postrotate ... endscript | Führt Befehle nach der Rotation aus (z. B. Apache reload) |
Test der Konfiguration
Zum Testen der neuen Logrotate-Datei:
sudo logrotate --debug /etc/logrotate.d/rpxconf
Ein erfolgreicher Test zeigt eine Ausgabe ähnlich wie:
reading config file /etc/logrotate.d/rpxconf
reading config info for /usr/local/share/rpxconf/log_rpxconf/rpxconf.log
...
considering log /usr/local/share/rpxconf/log_rpxconf/rpxconf.log
rotating pattern: /usr/local/share/rpxconf/log_rpxconf/rpxconf.log after 1 days
Manuelle Rotation ausführen
Um die Logrotation sofort anzustoßen:
sudo logrotate -f /etc/logrotate.d/rpxconf
Danach sollten im jeweiligen Verzeichnis rotierte und ggf. komprimierte Logdateien erscheinen:
rpxconf.log.1
rpxconf.log.2.gz
access.log.1.gz
error.log.1.gz
Automatische Ausführung
Debian ruft logrotate automatisch täglich über einen Cronjob auf:
/etc/cron.daily/logrotate
Alle Konfigurationen in /etc/logrotate.d/
werden dabei automatisch berücksichtigt – es ist keine weitere Einrichtung notwendig.
Anpassung der Berechtigungen
Falls deine Anwendung die Logdateien nicht als root
, sondern z. B. als www-data
schreibt, sollten die Rechte angepasst werden:
create 0640 www-data www-data
Fazit
Mit einer sauberen Logrotate-Konfiguration bleiben Logdateien handlich, alte Daten werden automatisch archiviert und deine Systeme bleiben übersichtlich und stabil. Einmal eingerichtet, läuft das System vollständig automatisiert.