it-swarm.com.de

logrotate Konfigurationsdateisyntax - mehrere Wildcard-Einträge möglich?

Da die Manpage meine Frage nicht beantwortet und ich keinen Rotationszyklus erzwingen möchte, habe ich beschlossen, die Frage hier zu stellen.

Die Manpage für logrotate enthält folgendes Beispiel:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail [email protected]
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

Alle Beispiele mit Platzhaltern enthalten nur einen Eintrag. Nun interessiert mich, ob dies auch erlaubt ist:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

Hier ist die Begründung: Ich habe mehrere VHosts und teile sie durch den Benutzer auf, der diese VHosts "besitzt". Da die Protokolldateien weltweit lesbar sind, möchte ich einen Ordner in das Basisverzeichnis des Benutzers einbinden, ihn jedoch auf die Protokolldateien beschränken, die der Benutzer "besitzt". Dies ist am einfachsten, wenn Sie die Protokolle in Ordner aufteilen (und binden) -Montage erfordert dieses Schema sowieso). Ich suche also nach einer Lösung, um sowohl die Protokolldateien unter /var/log/httpd als auch alle Protokolldateien unter Unterverzeichnissen dieses Verzeichnisses zu drehen - , ohne dass aufgelistet werden muss jedes Unterverzeichnis mit Namen.

Im Allgemeinen gibt die Manpage keinen Hinweis darauf, ob Mehrfacheinträge für Platzhalterregeln oder nur für vollständige Pfade möglich sind. Ich verwende die Logrotate-Version 3.7.8-6, die mit Debian "Squeeze" geliefert wird, aber ich gehe davon aus, dass dies nicht unbedingt für eine Distribution oder eine Programmversion spezifisch ist.

79
0xC0000022L

Ja, Sie können mehrere Platzhalter verwenden. Sie können Ihre Datei testen, ohne die eigentlichen Rotationen durchzuführen:

logrotate -d -f /etc/logrotate.conf
  • -d = Aktiviert den Debug-Modus. Im Debug-Modus werden keine Änderungen an den Protokollen oder an der Logrotate-Statusdatei vorgenommen.

  • -f = Weist Logrotate an, die Drehung zu erzwingen, auch wenn dies nicht für erforderlich gehalten wird. Dies ist manchmal hilfreich, wenn Sie neue Einträge zu logrotate hinzugefügt haben oder wenn alte Protokolldateien manuell entfernt wurden, da die neuen Dateien erstellt werden und die Protokollierung korrekt fortgesetzt wird. "

114

Ich wollte nur klarstellen, denn das habe ich hier, um zu sehen, wie es geht.

Für eine einzelne Konfiguration können mehrere Protokolldateien angegeben werden, z

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail [email protected]
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}
22
ThorSummoner

Aus der Manpage für logrotate :

Beachten Sie, dass Protokolldateinamen in Anführungszeichen gesetzt werden können (und dass Anführungszeichen erforderlich sind, wenn der Name Leerzeichen enthält). Es gelten die normalen Shell-Anführungsregeln, wobei die Zeichen ', "und\unterstützt werden.

Bitte denken Sie daran, die Anführungszeichen zu ändern oder zu entfernen, wenn Sie von einem einzelnen zu mehreren Mustern wechseln:

Das funktioniert:

/var/log/*.log /var/log/*.blog {

das funktioniert auch:

/var/log/*.log
/var/log/*.blog {

Das funktioniert nicht:

'/var/log/*.log /var/log/*.blog' {

und auch nicht das:

"/var/log/*.log /var/log/*.blog" {

Vergleiche mit dem Einzelmusterfall.

Das funktioniert:

'/var/log/*.log' {

und das funktioniert auch:

"/var/log/*.log" {

Getestet mit Logrotate 3.10.0

4
Piotr Dobrogost