Ich verwende Rotatelogs, um meine täglichen Apache-Protokolle im Format zu erstellen host.<day>.<month>.<year>.access.log
. Jetzt möchte ich das Protokoll gzipen und in ein anderes Verzeichnis verschieben, nachdem es fertig ist. Wie geht das?
Update: Es gab einen kleinen Fehler. logrotate
->rotatelogs
Antworten:
Sie können die Rotatelogs- Option -p verwenden , um ein Programm zum Komprimieren des Protokolls nach der Rotation zu verwenden. (Siehe als Referenz: https://httpd.apache.org/docs/2.4/programs/rotatelogs.html )
Beispiel:
CustomLog "|bin/rotatelogs -p '/path/to/compress.sh' -l /var/log/logfile.%Y.%m.%d 86400"
compress.sh :
quelle
--remove-files
in eintar
. 2) Abhängig von Ihrem Fall kann es auch interessant sein, dies aufzunehmen--verify
.Ich habe mir das folgende Skript ausgedacht
Und nach dem Cron-Eintrag
quelle
Logrotate übernimmt gerne die Komprimierung für Sie. Einfach hinzufügen:
Zur logrotate Konfiguration für Apache. Es gibt auch eine nette Option, die die Komprimierung um einen Tag verzögert:
Logrotate kann Ihnen beim Verschieben nicht helfen, aber ein Cron-Job wie dieser kann:
quelle
logrotate
bietet dieolddir
Optionen, mit denen die Protokolle verschoben werden können - sieheman logrotate
. Das OP hat die Frage bearbeitet, um anzuzeigen, dass er sie nicht verwendet .rotatelogs
logrotate
olddir
Option. Das obige Shell-Skript scheint die beste Lösung zu sein.Ich benutze find und crontab, um dies zu erreichen
# crontab -e
-mtime n
Die Daten der Datei wurden zuletzt vor n * 24 Stunden geändert.! -name
"nicht". * "versteckte Dateien! -name
"nicht" .gz "-Dateien, die bereits komprimiert werden sollten-print0 & -0
um sicherzustellen, dass Leerzeichen oder Sonderzeichen korrekt an xargs -> gzip weitergeleitet werden (zur Sicherheit des Dateinamens)find -exec könnte verwendet werden, weist jedoch Fehler auf, bei denen
| xargs
es stabiler istquelle
quelle