Das Problem mit logrotate besteht darin, dass es eine globale Konfigurationsdatei enthält und Sie KEINE einzelne Unterkonfigurationsdatei für die Protokollrotation ausführen können, während Sie weiterhin die in der globalen Konfigurationsdatei festgelegten Optionen anwenden. Das heißt, es gibt keine gute Möglichkeit, nur EINE Protokollrotationsdateiprüfung auszuführen, genau wie wenn jede Nacht von cron ausgeführt würde. Dies könnte mit der Option "Beschränkung auf diese Protokolldateien" oder besser mit "Ausführen der globalen Konfiguration, aber nur mit dieser Unterkonfigurationsdatei" verbunden sein.
Beachten Sie, dass --forceDateien gedreht werden, auch wenn sie die angegebenen Kriterien wie Größe, Alter usw. nicht erfüllen.
xofer
4
Wenn Sie die logrotate-Konfigurationsdatei in /etc/logrotate.d/custom.conf ablegen, bedeutet dies, dass Sie keine Größe / Zeit angeben müssen, zu der das Protokoll automatisch gedreht werden soll? Oder sollten Sie die Konfiguration in einem anderen Ordner ablegen, wenn Sie nicht beabsichtigen, sie automatisch zu drehen?
Damainman
18
Das Kriterium "notifempty" wird von "--force" nicht ignoriert. Das hat mich eine Weile verblüfft, deshalb erwähne ich dies als Ausnahme von der @ xofer-Anweisung.
Thelogix
16
Sie können einfach alle mit logrotate --force /etc/logrotate.d/(nur Verzeichnisname) drehen
fcm
1
Es ist wahr, dass --forcedie Rotation auch dann erzwungen wird, wenn Dateien nicht den Kriterien (Alter, Größe usw.) entsprechen. Beachten Sie jedoch, dass dies der einzige Weg ist, um echte Probleme zu erkennen, bei denen logrotate -dkeine Probleme auftreten würden (z. B. wenn mir ein Server ausgeht) Speicherplatz aufgrund von logrotate läuft seit Monaten nicht mehr ... und dank habe --forceich herausgefunden, dass es File existsFehler gab. Ich habe diese Dateien manuell gelöscht und jetzt funktioniert die Rotation wieder korrekt!
lucaferrario
559
logrotate -d [your_config_file] Ruft den Debug-Modus auf und gibt Ihnen eine ausführliche Beschreibung dessen, was passieren würde. Die Protokolldateien bleiben jedoch unberührt.
Diejenigen, die hierher kamen, suchten nach der Antwort auf eine Frage wie "Wie kann ich meine logrotate conf testen?" kann dies als Antwort nehmen, da es nur den conf
kommradHomer
Ich habe es mit deinem Ansatz versucht logrotate --forceund arbeite gut.
Benyamin Jafari
122
Wenn Sie ein einzelnes bestimmtes Verzeichnis oder die Protokolldateien eines Dämons zwangsweise ausführen möchten, finden Sie die Konfiguration normalerweise in /etc/logrotate.dund sie funktionieren eigenständig.
Beachten Sie, dass die in angegebene globale Konfiguration /etc/logrotate.confnicht gilt. Wenn Sie dies tun, sollten Sie sicherstellen, dass Sie alle gewünschten Optionen in der /etc/logrotate.d/[servicename]Konfigurationsdatei angeben .
Sie können es ausprobieren, um -dzu sehen, was passieren würde:
logrotate -df /etc/logrotate.d/nginx
Dann können Sie ausführen (am Beispiel von nginx):
Das ist gut und schön, aber Sie verlieren alle globalen Einstellungen, die Sie in der "/etc/logrotate.conf" haben. Ich habe ein Skript geschrieben, um die globalen und spezifischen Logrotate-Dateien zusammenzuführen und es dann zu verwenden, um dieses Problem zu lösen. (siehe meine Antwort).
Anthony
Die Verwendung logrotate -d /etc/logrotate.confwird auch durch alle anderen enthaltenen conf-Dateien ausgeführt.
Wmassingham
61
Möglicherweise möchten Sie es im ausführlichen + Force-Modus ausführen.
Bearbeiten Sie /var/lib/logrotate.status, um das Datum der letzten Drehung in der zu testenden Protokolldatei zurückzusetzen.
Dann renne logrotate YOUR_CONFIG_FILE.
Sie können auch das Flag --force verwenden, aber wenn Sie logrotate.status bearbeiten, erhalten Sie mehr Präzision darüber, was gedreht wird und was nicht.
Diese /var/lib/logrotate.statusDatei existiert nicht auf Debian Squeeze.
Lashae
Versuchen Sie / var / lib / logrotate / status. Ich bin mir nicht sicher, ob dies eine Debian / Redhat-Sache ist oder ob ich "." wo hätte ich "/" setzen sollen.
Ben Aveling
2
Erstellt ein Shell-Skript, um das Problem zu lösen.
Dieses Skript führt nur die einzelne logrotate-Unterkonfigurationsdatei aus, die sich in "/etc/logrotate.d" befindet, enthält jedoch die globalen Einstellungen aus der globalen Konfigurationsdatei "/etc/logrotate.conf". Sie können auch andere Optionen zum Testen verwenden ...
Antworten:
Ja:
logrotate --force $CONFIG_FILE
quelle
--force
Dateien gedreht werden, auch wenn sie die angegebenen Kriterien wie Größe, Alter usw. nicht erfüllen.logrotate --force /etc/logrotate.d/
(nur Verzeichnisname) drehen--force
die Rotation auch dann erzwungen wird, wenn Dateien nicht den Kriterien (Alter, Größe usw.) entsprechen. Beachten Sie jedoch, dass dies der einzige Weg ist, um echte Probleme zu erkennen, bei denenlogrotate -d
keine Probleme auftreten würden (z. B. wenn mir ein Server ausgeht) Speicherplatz aufgrund von logrotate läuft seit Monaten nicht mehr ... und dank habe--force
ich herausgefunden, dass esFile exists
Fehler gab. Ich habe diese Dateien manuell gelöscht und jetzt funktioniert die Rotation wieder korrekt!logrotate -d [your_config_file]
Ruft den Debug-Modus auf und gibt Ihnen eine ausführliche Beschreibung dessen, was passieren würde. Die Protokolldateien bleiben jedoch unberührt.quelle
logrotate --force
und arbeite gut.Wenn Sie ein einzelnes bestimmtes Verzeichnis oder die Protokolldateien eines Dämons zwangsweise ausführen möchten, finden Sie die Konfiguration normalerweise in
/etc/logrotate.d
und sie funktionieren eigenständig.Beachten Sie, dass die in angegebene globale Konfiguration
/etc/logrotate.conf
nicht gilt. Wenn Sie dies tun, sollten Sie sicherstellen, dass Sie alle gewünschten Optionen in der/etc/logrotate.d/[servicename]
Konfigurationsdatei angeben .Sie können es ausprobieren, um
-d
zu sehen, was passieren würde:Dann können Sie ausführen (am Beispiel von nginx):
Und nur die Nginx-Protokolle werden gedreht.
quelle
logrotate -d /etc/logrotate.conf
wird auch durch alle anderen enthaltenen conf-Dateien ausgeführt.Möglicherweise möchten Sie es im ausführlichen + Force-Modus ausführen.
logrotate -vf /etc/logrotate.conf
quelle
Der Weg, um alle logrotate auszuführen, ist:
Dadurch wird die primäre Logrotate-Datei ausgeführt, die auch die anderen Logrotate-Konfigurationen enthält
quelle
Geben Sie den folgenden Befehl ein, um die angegebene Protokollrotation auszuführen:
Optionen:
-v: Zeige den Prozess
-f: Lauf erzwingen
Benutzerdefiniert: Benutzerdefinierte Protokolleinstellung
zB: mongodb-log
quelle
Bearbeiten Sie /var/lib/logrotate.status, um das Datum der letzten Drehung in der zu testenden Protokolldatei zurückzusetzen.
Dann renne
logrotate YOUR_CONFIG_FILE
.Sie können auch das Flag --force verwenden, aber wenn Sie logrotate.status bearbeiten, erhalten Sie mehr Präzision darüber, was gedreht wird und was nicht.
quelle
/var/lib/logrotate.status
Datei existiert nicht auf Debian Squeeze.Erstellt ein Shell-Skript, um das Problem zu lösen.
http://www.ict.griffith.edu.au/anthony/software/#logrotate_one
Dieses Skript führt nur die einzelne logrotate-Unterkonfigurationsdatei aus, die sich in "/etc/logrotate.d" befindet, enthält jedoch die globalen Einstellungen aus der globalen Konfigurationsdatei "/etc/logrotate.conf". Sie können auch andere Optionen zum Testen verwenden ...
Zum Beispiel...
quelle