logrotate Dateien mit Datum umbenennen

logrotate Dateien mit Datum umbenennen

Momentan benennt logrotate alte Protokolldateien in access.log.1.gz, access.log.2.gz usw. um. Mir wäre es lieber, wenn sie access.log.20090714.gz, access.log.20090715.gz usw. heißen würden – eine für jeden Tag.

Ich kann keine Option finden, ein Dateinamenmuster für die alten Protokolldateien anzugeben. Wissen Sie, wie das geht?

Übrigens, dies dient zum Rotieren von Lighttpd-Protokolldateien, falls das von Bedeutung ist.

Antwort1

Fügen Sie in /etc/logrotate.confoder /etc/logrotate.d/lighttpdoder der entsprechenden Datei, falls irgendwo anders, dateextder Strophe, auf die Sie Datumssuffixe anwenden möchten, hinzu.

Weitere Informationen vonManpage für „logrotate“:

Datumext

Archivieren Sie alte Versionen von Protokolldateien, indem Sie eine tägliche Erweiterung wie JJJJMMTT hinzufügen, anstatt einfach eine Zahl hinzuzufügen.

Antwort2

Verwenden Sie Cronolog – es schreibt Logdateien von vornherein mit den richtigen Dateinamen (z. B. lasse ich meine Webserver Logdateien im Allgemeinen als JJJJ/MM/TT/Zugriff oder JJJJ/MM/TT/Fehler usw. schreiben). Weitere Einzelheiten zur Konfiguration von Cronolog mit lighttpd finden Sie hier:http://redmine.lighttpd.net/projects/1/wiki/MigratingFromApache

(Obwohl auf dieser Seite erwähnt wird, dass server.errorlog nicht über Cronolog ausgeführt werden kann, scheint es hierzu einen Fehlerbericht zu geben, der als „behoben“ markiert wurde – leider kann ich nicht mehr als eine URL gleichzeitig posten, da ich ein „neuer“ Benutzer von Serverfault bin …)

Antwort3

Ich glaube nicht, dass lighttpd oder logrotate das alleine schaffen. Ich sehe zwei Möglichkeiten, dies zu erreichen:

Führen Sie Ihr eigenes Skripting direkt nach logrotate aus, beispielsweise am Ende des Cronjobs. So etwas wie:

if [ -f /var/log/lighttpd/access.log.1.gz ]; then`
    mv /var/log/lighttpd/access.log.1.gz /var/log/lighttpd/access.log.$date.gz
fi

Oder syslog-ng kann Protokolldateien nach Datum erstellen und lighttpd kann Protokolle an Syslog senden, anstatt sie selbst zu schreiben.

# syslog-ng.conf
destination df_lighttpd { file("/var/log/lighttpd/$YEAR$MONTH$DAY.log"); };
filter f_lighttpd { program("lighttpd"); };
log { source(s_all);  filter(f_lighttpd); destination(df_lighttpd); };

und setzen Sie accesslog.use-syslog& server.errorlog-use-syslogin der Lighttpd-Konfiguration.


Bearbeiten:Cronolog ist einfacher und/oder als jeder meiner Vorschläge. Ich würde es verwenden, wenn es für Sie funktioniert.

verwandte Informationen