logrotate benenne Dateien mit Datum um

7

Im Moment benennt logrotate alte Protokolldateien in access.log.1.gz, access.log.2.gz usw. um. Ich würde es vorziehen, wenn sie access.log.20090714.gz, access.log.20090715.gz heißen. etc - eine für jeden Tag.

Ich kann keine Option zum Angeben eines Dateinamenmusters für die alten Protokolldateien finden. Wissen Sie, wie das geht?

Übrigens dient dies zum Drehen von lighttpd-Protokolldateien, falls dies wichtig ist.

Krystian Cybulski
quelle

Antworten:

14

Fügen Sie in /etc/logrotate.confoder /etc/logrotate.d/lighttpdoder in der richtigen Datei, falls vorhanden, der Zeilengruppe hinzu, dateextin der Sie Datumssuffixe anwenden möchten.

Weitere Informationen finden Sie in der Logrotate-Manpage :

Datumsangabe

Archivieren Sie alte Versionen von Protokolldateien und fügen Sie eine tägliche Erweiterung wie JJJJMMTT hinzu, anstatt einfach eine Nummer hinzuzufügen.

Juliano
quelle
Während die anderen Antworten auch die Ergebnisse liefern können, die ich brauche, ist diese die einfachste. Obwohl es nicht genau den Dateinamen enthält, den ich ursprünglich gewünscht hatte, erfüllt es die Aufgabe, die ich brauchte. Vielen Dank.
Krystian Cybulski
2

Verwenden Sie cronolog - es werden in erster Linie Protokolldateien mit den richtigen Dateinamen geschrieben (z. B. lassen meine Webserver Protokolldateien im Allgemeinen als JJJJ / MM / TT / Zugriff oder JJJJ / MM / TT / Fehler usw. schreiben). Weitere Details zum Konfigurieren von cronolog mit lighttpd finden Sie hier: http://redmine.lighttpd.net/projects/1/wiki/MigratingFromApache

(Während auf dieser Seite erwähnt wird, dass server.errorlog nicht über cronolog ausgeführt werden kann, scheint es dafür einen Fehlerbericht zu geben, der als "behoben" markiert wurde. Leider kann ich seitdem nicht mehr als eine URL gleichzeitig veröffentlichen Ich bin ein "neuer" Benutzer bei Serverfault ...)

Cos
quelle
Cool. Wir verwenden Cronolog bei Apache, aber ich dachte nicht, dass es bei LightTPD funktioniert.
Theotherreceive
0

Ich glaube nicht, dass lighttpd oder logrotate dies alleine tun können. Ich sehe zwei Möglichkeiten, um dies zu erreichen:

Machen Sie Ihre eigenen Skripte direkt nach dem Logrotieren, wie am Ende des Cronjobs. 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 setze accesslog.use-syslog& server.errorlog-use-syslogin der lighttpd conf.


Bearbeiten: Cronolog ist einfacher und / oder als einer meiner Vorschläge, ich würde damit anfangen, wenn es für Sie funktioniert.

theotherreceive
quelle
Datumsumgebungsvariable existiert nicht, Sie sollten $ date durch ersetzen date +"%Y%m%d"(Backquote vor und nach diesem Befehl nicht vergessen, die ausgeblendet sind)
STB Land