Die Manpage von logrotate
sagt:
It can be used when some program cannot be told to close its logfile
and thus might continue writing to the previous log file for some
time.
Das verwirrt mich. Wenn ein Programm nicht angewiesen werden kann, seine Protokolldatei zu schließen, schreibt es für immer weiter , nicht für eine Weile . Wenn die Komprimierung auf den nächsten Rotationszyklus verschoben wird, schreibt das Programm auch nach dem nächsten Rotationszyklus weiter in diese Datei. Wie verschiebt sich das Problem?
Nach meinem Verständnis copytruncate
sollte dies verwendet werden, wenn ein Programm nicht angewiesen werden kann, die Protokolldatei zu schließen. Mir ist bekannt, dass einige in die Protokolldatei geschriebene Daten verloren gehen, wenn der Kopiervorgang ausgeführt wird.
Ich habe in der Logrotate-Datei nach couchdb gesucht, und es gab sowohl Optionen copytruncate
als auch delaycompress
Optionen.
/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
Es sieht so aus, als hätte es keinen Sinn, zu verwenden, delaycompress
wenn copytruncate
es bereits da ist. Was vermisse ich?
copytruncate
, muss das Programm nicht angewiesen werden, die Protokolldatei zu schließen. Ist es also sinnlos,delaycompress
zusammen mit anzugebencopytruncate
?copytruncate
sei denn, Sie müssen unbedingt , weil es Protokolleinträge verliert. Sie können beide Optionen verwenden, wenn Sie die andere Funktion verwenden möchtendelaycompress
- die Möglichkeit, die vorherige Protokolldatei zu lesen, ohne sie zuerst dekomprimieren zu müssen.copytruncate
wenn ich meinem Programm nicht mitteilen kann, dass es neu geladen werden soll?Ich bin mir nicht sicher, ob ich Ihre Frage vollständig verstehe, aber wenn Sie fragen, was ich denke, verwende ich Folgendes:
Das ist eine nette (oder zumindest eine) Möglichkeit, den Baumstamm zu töten und zum nächsten zu gelangen. Für "Programme", die scheiße sind, wie die ASA-Plattform von Cisco, die Tonnen von Daten pro Sekunde protokolliert, funktioniert es.
quelle
Wir gebrauchen:
Dadurch wird eine feste Kopie des Apache erstellt,
access_log
access_log.1
sodass wir am Ende des Tages unser Stats-Paket als Skript ausführen können.Am folgenden Tag komprimiert logrotate die Dateierstellung
access_log.2.zip
quelle