Eventuell ein Kandidat für das Wiki? So haben wir es eingerichtet (Ubuntu 14.04 LTS Trusty):
Benutzt wird das logrotate-Utility, das standardmäßig täglich auf jedem *nix-System läuft. Es ist eine entsprechende Konfigurationsdatei „nuclos“ im Verzeichnis /etc/logrotate.d erforderlich:
/opt/nuclos/logs/server.log.* {
missingok
rotate 1
daily
maxsize 1023k
olddir /opt/nuclos/logs/oldlogs
notifempty
create 0660 root root
compress
dateext
postrotate
rm ${1}
endscript
}
Wichtig: Logdateien vor dem Test der Konfiguration sichern. Wenn die rotate-Kriterien erfüllt sind, soll die Datei mit Endung datext nach olddir verschoben werden. Geht das mangels Rechten schief, ist die Originaldatei auf Länge 0 reduziert, und in olddir steht nichts.
Erläuterung:
- * Es werden nur Dateien angefasst, die bereits von nuclos umbenannt worden, z.B. server.log.1, server.log.2 usw.
- * missingok: Wenn keine solche Datei gefunden wird, ist dies kein Fehler
- * rotate 1: Nur einmal rotieren, denn die Dateien haben ja schon bereits eine laufende Nummer bekommen
- * daily: täglich rotieren
- * maxsize 1023k: Geht davon aus, dass nuclos das server.log bei 1024k (1M) umbenennt. Diese Anweisung ist der eigentliche Trigger für das Rotieren der Datei
- * olddir /opt/nuclos/logs/oldlogs: Dorthin wird das Log kopiert, bevor es der Rotation unterzogen wird
- * notifempty: Leere Dateien nicht rotieren (sollten sowieso nicht vorkommen)
- * create 0660 root root: Rotierte Datei mit Recht 0660, User root und Gruppe root anlegen
- * compress: Rotierte Datei wird komprimiert (Default ist gzip, Endung also .gz)
- * dateext: Die rotierte Datei erhält das Tagesdatum im Dateinamen (Beispiel: server.log.1-20160108.gz).
- * postrotate: Normalerweise wird die rotierte Datei auf Länge 0 gekürzt, d.h. die Datei server.log.1 würde danach mit Länge 0 in /opt/nuclos/logs stehen. Das wollen wir aber nicht, denn sie wurde bereits nach oldlogs kopiert, mit dem Datum versehen (dateext) und komprimiert. Also wird die rotierte Datei abschließend gelöscht.
Alte Dateien aus dem Verzeichnis oldlogs kann man per cron entfernen. crontab-Eintrag ist noch ungetestet, wird später gepostet…