Nils und ich haben uns heute eine ganze Weile mit Debians Eigentümlichkeiten rumgeschlagen. Ausgangspunkt war die Frage, wie man Anpassungen bei dem Rotationsintervall von Standard-Logdateien, wie z.B. mail.log vornehmen könnte. Man sollte annehmen, dass ein paar simple Modifikationen an der logrotate Konfiguration reichen würden, aber weit gefehlt.

Leider ist Debians Policy alles andere als stringent: die meisten Pakete verwenden logrotate, während einige Pakete eigene Lösungen verwenden. Das syslog-Paket bedient sich des savelog-Tools, in einer für Standardfälle sicherlich arbeitssparenden, aber leider auch recht intransparenten Weise: Zuständig für die Rotation ist der Cronjob sysklogd in /etc/cron.daily/ bzw. /etc/cron.weekly/. Dieser wiederum bedient sich des Tools syslogd-listfiles, welches die aktuelle syslog.conf ausliest und die darin gefunden Dateien nach bestimmten Kriterien rotiert.

Wer das ganze lieber logrotate überlassen will, der lasse sich einfach mit syslogd-listfiles -a alle betroffenen Logdateien ausgeben, füge sie der logrotate-Konfiguration hinzu und lösche einfach den oben genannten Cronjob.

Die Kriterien nach denen Logdateien rotiert werden sind übrigens folgende:

  • Syslog Eintrage mit einem Catchall (*.*) werden täglich rotiert.
  • Alle anderen Einträge werden täglich rotiert, sofern sie größer als 1 Megabyte sind.
  • Was überbleibt wird wöchentlich rotiert.

Von Dateien, die täglich rotiert werden, wird ein Backlog von 7 Tagen aufbewahrt. Dateien die wöchentlich rotiert werden 4 Wochen. Eine weitere Inkonsistenz, die nicht nach meinem Geschmack ist.

PS: Wer (wie ich in früheren Installationen) syslog-ng verwendet braucht sich diese Mühe nicht machen. Das Paket syslog-ng verwendet wie gewohnt logrotate.