Logrotate-Platzhalter schlagen bei fehlenden Dateien mit "missingok" UND "olddir" fehl

879
sastorsl

Plattform:

RHEL 7 logrotate-3.8.6-7.el7_2.x86_64 

Hintergrund:

Auf einem RedHat-Linux-Server habe ich eine große Anzahl von Anwendungsservern und möchte eine einheitliche Protokollierungsroutine zum Bereinigen von Protokolldateien. Die Verwendung von Platzhaltern ist von größter Bedeutung, so dass ich keine ständig wachsende und schrumpfende Liste führen muss.

Problem:

Bei der Kombination von Platzhaltern scheint die Option "missingok" UND "olddir" nicht zu funktionieren. Wenn ich ein Muster für Debug-Protokolldateien definiere, die möglicherweise vorhanden sind oder nicht, und nur "missingok" verwende, ist alles in Ordnung. Wenn ich die "olddir" -Option hinzufüge, schlägt dies fehl mit:

# logrotate -d /etc/logrotate.d/foobar reading config file /etc/logrotate.d/foobar olddir is now old_logs error: /etc/logrotate.d/foobar:28 error verifying log file path /srv/www/servers/*/logs: No such file or directory removing last 1 log configs 

Die Konfigurationsdatei:

/srv/www/servers/*/logs/*_foobar.txt { daily olddir old_logs missingok } 

Ich habe gesehen, dass es in http://rhn.redhat.com/errata/RHBA-2008-0703.html ein seit langem bestehendes Update gibt, das das Problem mit Wildcards und missingok behebt, aber hat jemand das Problem mit olddir gesehen oder behoben?

Ich überlege, olddir zu überspringen und postrotate + find / mv zu verwenden, aber ich möchte das nicht tun.

0

2 Antworten auf die Frage

0
sastorsl

Fixed upstream: https://github.com/logrotate/logrotate/commit/73493ec38c5e806fa66d8c3f13259775da6282d9

Quote:

Fix 'olddir' usage with wildcard in the middle of path in the pattern… … definition when the pattern did not match any log file. 
0
zjalex

Ich habe das gleiche Problem getroffen.

Schauen Sie sich das Verzeichnis mit /var/logs/*/*/*.log an und verwenden Sie "missingok" und "olddir" zusammen.

Wenn sich unter diesem Verzeichnis kein Protokoll befindet, wird Folgendes beanstandet:

Fehler beim Überprüfen des Protokolldateipfads / var / logs / * / *: Keine Datei oder Verzeichnis

@sastorsl wie geht es dir dann?

Minenlogrotat 3.7.8.

Es scheint in 3.11.0 behoben worden zu sein.