Ich versuche, logrotate dazu zu bringen, an meinem VPS zu arbeiten, um meine Apache-Dateien wöchentlich zu drehen. Derzeit ist der Inhalt der Apache2-Konfigurationsdatei so.
"/var/www/user/site.com/logs/*.log" {
weekly
missingok
rotate 8
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Ich habe es jetzt für zwei Wochen verlassen und nichts hat sich geändert, soweit ich das beurteilen kann. Wenn ich es über die Befehlszeile simuliere, erhalte ich die folgende Ausgabe.
user@geneva:/var/lib/logrotate$ /usr/sbin/logrotate -d /etc/logrotate.d/apache2
reading config file /etc/logrotate.d/apache2
reading config info for "/var/www/user/site.com/logs/*.log"
Handling 1 logs
rotating pattern: "/var/www/user/site.com/logs/*.log" weekly (8 rotations)
empty log files are not rotated, old logs are removed
considering log /var/www/user/site.com/logs/access.log
log does not need rotating
considering log /var/www/user/site.com/logs/error.log
log does not need rotating
not running postrotate script, since no logs were rotated
Irgendwelche Ideen, was ich falsch konfiguriert habe?
Meine Statusdatei ist auch leer :(
user@geneva:~$ cat /var/lib/logrotate/status
logrotate state -- version 2
Aktualisieren
Ich habe die Statusdatei gelöscht und eine forcierte Ausführung von logrotate durchgeführt. Jetzt sehen die Protokolle so aus, als wären sie gedreht worden, und die Statusdatei sieht vielversprechender aus!
sudo rm /var/lib/logrotate/status
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
/var/lib/logrotate.status
mit einem Datum erforderlich, das mindestens eine Woche alt ist. Ich habe die Antwort mit einem Beispiel aktualisiert ...Dies kann daran liegen, dass Ihre Protokolldateien leer sind.
Diese Situation kann auftreten, weil Apache weiterhin in eine vorherige Protokolldatei schreibt, die umbenannt wurde, ohne Apache neu zu starten. Also wurde access.log zu access.log.1 und Apache schreibt hinein.
Oder Sie haben ein Problem mit der Erstellungszeit des Protokolls:
quelle
notifempty
Zeile auskommentieren, um die 0-Byte-Protokolle zu behandeln, die nicht rotieren. Dann sollten Sietouch
vor jedem Test eine neue Protokolldatei erstellen, damit die Logrotate etwas zu drehen hat.Ich sah mich einem ähnlichen Problem gegenüber, außer dass mir keine dieser Antworten geholfen hatte. Meine Protokolldatei war riesig und alt, meine Konfiguration war zu 100% in Ordnung und gültig. Das Entfernen der Statusdatei hat nicht geholfen.
Es stellte sich heraus, dass das Problem in doppelten Logrotate-Einträgen lag . Wenn ich logrotate manuell auf meiner Konfigurationsdatei nur so laufen lasse:
es wurden keine fehler angezeigt, es hieß nur:
Ich weiß immer noch nicht warum. Aber wenn ich einen kompletten Logrotate-Befehl wie diesen ausführe:
Ich habe die folgende Zeile erhalten:
Es stellte sich heraus, dass die logrotate-Konfigurationsdatei für meinen Dienst die Einträge für die rotierenden Nginx-Zugriffsprotokolle sowie die Dienstprotokolle selbst enthielt. Und das widersprach der Konfiguration von ngnix logrotate, die eine Regel für alle nginx-Einträge enthält:
Die Lösung für meinen Fall ist also ziemlich einfach: Ich musste nur widersprüchliche Nginx-Log- Rotationsregeln aus meiner Konfiguration löschen .
Ich nehme an, dass logrotate nur in einer der neuesten Versionen damit begonnen hat, die Verarbeitung von Dateien bei Regelkonflikten abzubrechen. Ich bekomme diesen Fehler mit v.3.8.7, aber unter v.3.7.8 mit derselben widersprüchlichen Konfiguration wird derselbe Fehler ausgegeben, der sich jedoch in Ordnung dreht. Obwohl ich keine Aufzeichnung davon im logrotate Changelog finden konnte.
quelle
Versuchen Sie,
sudo logrotate -f --verbose /etc/logrotate.d/apache2
das Programm auszuführen. Sehen Sie, was in der Konsole geschrieben ist, und beheben Sie alle Fehler.quelle
Ich hatte eine Debian 7-Maschine, die nach einem System-Update keine Mail-Protokolle mehr drehte. Alle anderen Protokolle außer den E-Mail-Protokollen wurden korrekt gedreht. Ich stellte fest, dass die Mail-Protokolle um mehrere Gigabyte gewachsen waren. Ich habe die Protokollrotation immer über Webmin verwaltet. Beim Laufen
logrotate -d /etc/logrotate.conf
sah ich die folgende Meldung:Ignoring rsyslog.dpkg-old, because of .dpkg-old ending
Es stellte sich heraus, dass meine Postrotationseinträge in aufgelistet waren
/etc/logrotate.d/rsyslog.dpkg-old
, was ignoriert wurde! Das Umbenennen der Datei hat die Rotation der Logdatei behoben :-)quelle