Viele Linux Anwender haben es bestimmt schon mal gesehen dass in den Log Verzeichnissen Ihres Linux Systems in bestimmten Intervallen vereinzelte Log Dateien unterteilt werden und nur ein bestimmtes Alter der Log Dateien aufgehoben wird. Das beste Beispiel dafür sind die Access Log von Webservern. Bei diesen werden meist nur die Log von mehreren Wochen aufgehoben, da diese meist nur zur statistischen Auswertung benötigt werden.
Dieses Unterteilen der Log Dateien in bestimmten Intervallen bewerkstelligt das Unix/Linux Tool mit dem Namen "Logrotate". Für dieses wird für jedes Programm das Log Dateien erstellt eine Konfiguration erstellt, in welcher festgelegt wird in welchen Intervallen erstellt wird und wie lange diese aufgehoben werden sollen.
Diese Konfigurationsdateien befinden sich in " /etc/logrotate.d/ ". Programme wie Webserver (z.B. Apache) oder MailServer (z.B. Postfix) erstellen bei deren Installation schon Ihre eigene Logrotate Konfiguration.
Will man nun aber für eine andere Log Datei die Rotation einstellen geht man wie folgt vor:
1. Erstellt in /etc/logrotate.d/ eine leere Datei mit dem Wunschnamen
2. In diese schreibt Ihr folgendes rein:
Dies ist ein Beispiel für den Webserver Lighttpd. Erläuterungen kommen im einzelnen darunter.
/var/log/lighttpd/*log {
weekly
rotate 5
copytruncate
compress
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/lighttpd reload > /dev/null 2>&1;
endscript
}
Nun zur Erklärung:
/var/log/lighttpd/*log = Dies ist der Pfad in welchem die Log Dateien liegen. Das *log bedeutet dass diese Einstellung für alle Dateien gilt, welche mit log enden.
weekly = Hier steht wann die Log Datei immer abgeschnitten werden soll. In unserem Fall wöchentlich. Es gibt auch noch daily, monthly und yearly
rotate 5 = Hier stellt ihr ein wie oft die Log Datei rotiert werden soll. In unserem Beispiel 5 mal, das bedeutet dass 5 Log Dateien aufgehoben werden und jede beinhaltet die Daten von einer Woche
compress = Mit dieser Einstellungen werden die rotierten "älteren" Log Dateien komprimiert. Man spart demnach Platz auf der Festplatte
notifempty = Wenn die aktuelle Log Datei leer sein sollte wenn diese rotiert werden soll, dann wird diese nicht rotiert. Kannst du aber auch weglassen wenn du das nicht möchtest
/etc/init.d/lighttpd reload > /dev/null 2>&1; = Das ist der Befehl das Programm welchem die Log Dateien gehören neu startet. Die Log Datei wird nämlich umbenannt und dann erst wieder eine neue erstellt. Dies kann Fehler im Programm auslösen und kann verursachen dass das Programm keine Log mehr schreibt, weil kurzfristig die Log Datei nicht mehr existiert. Darum der Neustart des Programms.
Wenn Ihr eine Logrotate Konfiguration neu erstellt oder an einer bestehenden etwas ändert, vergesst nicht den Logrotate Dienst neu zu starten damit die neuen Einstellungen übernommen werden. |