Skip to content

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.