Durch das Protokollieren aller Protokolle in einem Verzeichnis werden Datumsangaben dupliziert

749
FrontierPsycho

Ich habe eine logrotate config, die so aussieht:

/var/log/update-job/*.log { daily rotate 7 compress delaycompress size 0k missingok copytruncate notifempty dateext dateformat %Y%m%d. extension log su root syslog } 

In der Theorie, was ich dies zu tun möchte, auf eine Logdatei namens treffen thelog.log, es zu drehen thelog.20150622.log, und am nächsten Tag thelog.20150623.logund so weiter. Ich möchte dies für mehr Log - Dateien mit beliebigen Dateinamen, zum Beispiel, könnte es sein, thelog.logund anotherlog.login den Ordnern zur gleichen Zeit.

Was ich tatsächlich sehe, ist jedoch:

thelog.20150622.20150623.log thelog.20150623.log thelog.log anotherlog.20150622.20150623.log anotherlog.20150623.log anotherlog.log 

Der Grund ist, dass das Glob-Pattern ( /var/log/update-job/*.log) auch mit den gedrehten Dateien übereinstimmt. Ich dachte, Logrotate sei klug genug, die Dateformat-Direktive zu verwenden, um herauszufinden, dass eine Datei gedreht wird, aber anscheinend ist dies nicht der Fall.

Irgendwelche Ideen, wie man das lösen kann?

Eine Problemumgehung könnte darin bestehen, zu entfernen delaycompress, sodass Dateien bei der Drehung in .log.gz komprimiert werden, sodass sie nicht mehr mit dem Glob-Muster übereinstimmen. Ich möchte jedoch eine weniger hackige Lösung finden.

0
Das Problem liegt in Ihren config-Dateien, die abgeglichen werden. Werfen Sie einen Blick hier und Sie werden das gleiche Problem bereits gelöst finden: https://serverfault.com/questions/76541/logrotate-creates-long-names-and-does-not-delete-logs mnmnc vor 9 Jahren 0
Im Grunde lautet die Antwort, dass nein, es gibt nichts zu tun, ich muss mich anpassen oder die Art und Weise ändern, wie ich dateext verwende, richtig? Vielen Dank. FrontierPsycho vor 9 Jahren 0
Sie sollten nur das Übereinstimmungs-String-Muster ändern. Dein ist zu umfangreich. Verwenden Sie `?`, Um ein einzelnes Zeichen zu finden oder die Übereinstimmung auf Buchstaben zu beschränken, und zwar nur mit `[az]` char-Klassen: http://unix.stackexchange.com/questions/67860/how-does-logrotate-treat-globbing mnmnc vor 9 Jahren 0
Vielen Dank. Ich versuche das - das Problem ist, dass die Protokollnamen oft auch Zahlen enthalten, so dass es nicht so einfach ist, sie mit Regex zu unterscheiden. Aber ich werde es versuchen. Sie sollten Ihren Kommentar zu einem Kommentar machen, damit ich ihn auswählen kann. FrontierPsycho vor 9 Jahren 0

0 Antworten auf die Frage