Verwenden von logrorate mit einem komplexen Protokollierungsverzeichnis

Verwenden von logrorate mit einem komplexen Protokollierungsverzeichnis

Eine Anwendung verfügt über ein Protokollverzeichnis, in dem eine Vielzahl von Protokollausgaben erstellt werden. Die Dateistruktur in diesem Protokollverzeichnis sieht ungefähr so ​​aus:

localhost:/var/log/myapp # ls

appClient22334.a    appClient22336.a    appClient22338.a
appClient22334.b    appClient22336.b    appClient22338.b    
appClient22334.c    appClient22336.c    appClient22338.c
appClient22335.a    appClient22337.a    appClient22339.a
appClient22335.b    appClient22337.b    appClient22339.b
appClient22335.c    appClient22337.c    appClient22339.c

Jeden Tag generiert die Anwendung Hunderte solcher Dateien, die alle gespeichert werden müssen. Die Zahlen steigen.

Für die meisten Zwecke verwende ich logrotate, um täglich Protokolldateien zu speichern und zu komprimieren, aber in diesem Fall sehe ich nicht, wie dies möglich sein könnte.

Die ideale Lösung wäre so etwas wie

appClient.20120324.gzip
appClient.20120325.gzip
appClient.20120326.gzip

Kann mir jemand von euch einen Tipp geben, ob dies mit logrotate möglich ist (vielleicht eine clevere Art, dies zu verwenden prerotate?) oder ob es schneller/einfacher ist, ein spezielles Bash-Skript zu schreiben?

Antwort1

Um die Dinge einfach zu halten, würde ich täglich einen Cron-Job ausführen, der die Protokolldateien von gestern in einer Datei zusammenfasst (z. B. yesterday.log) und sie bei Erfolg löscht, und dann logrotate ausführen, um diese Datei (um) zu benennen und zu komprimieren. Sie könnten logrotate vielleicht dazu zwingen, die ganze Aufgabe zu erledigen, sharedscriptsaber ich glaube nicht, dass das möglich ist, und ich würde keine Zeit damit verschwenden, es herauszufinden.

verwandte Informationen