Logfiles mit logrotate verwalten
Analog zu FreeBSDs newsyslog, kann man in Ubuntu die Logfiles mit logrotate
verwalten.
Logrotate ist in der Regel bereits vorinstalliert, ansonsten per apt-get install logrotate
installieren.
Das Hauptkonfigurationsfile befindet sich hier:
/etc/logrotate.conf
Die Dienste werden jedoch über die Files im Verzeichnis
/etc/logrotate.d/
gesteuert. Somit lassen wir das logrotate.conf
File unberührt und arbeiten nur mit dem logrotate.d
Verzeichnis (für einen neuen Dienst, einfach eine neue Datei im logrotate.d
Verzeichnis anlegen mit dem gewünschten Config Inhalt.)
Als Beispiel nehme ich hier das Logfile /var/log/mrtg.log
Im logrotate.d Verzeichnis befindet sich auch schon ein vorinstalliertes File für die mrtg Logs:
more /etc/logrotate.d/mrtg
Output:
/var/log/mrtg/mrtg.log {
weekly
rotate 12
compress
missingok
}
Allerdings zeigt dieses auf eine andere Location und ich möchte eine leich andere Config:
/var/log/mrtg.log { size 2M # Wir gepackt, sobald File mind. 2 Megabyte gross ist rotate 3 # Behalte die letzten zwei Logs maxage 14 # Entferne Logs, die älter als 14 Tage sind compress # Komprimiere die alten Logdateien delaycompress # Komprimiere die Daten, nachdem sie verschoben worden sind missingok # Falls eine Logdatei nicht existiert, ignoriere es notifempty # Leere Logdateien werden nicht rotiert }
ACHTUNG! Kommentare müssen aus dem defintiven Configfile entfernt werden, da es sonst zu einem Fehler kommen könnte (error: mrtg:8 unknown unit 't'
)
Nun also einfach das File nach den eigenen Wünschen anpassen und fertig. Logrotate wird jeweils automatisch per Cronjob ausgeführt (/etc/cron.daily/logrotate
). Man braucht also nicht weiter mehr zu tun.
Ausführliche Infos und Beispiele zur Konfiguration findest du im
man logrotate