sintassi del file di configurazione logrotate - sono possibili più voci jolly?


83

Dato che la pagina man non risponde alla mia domanda e non voglio forzare un ciclo di rotazione, ho deciso di porre la domanda qui.

La pagina man per logrotate fornisce il seguente esempio:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

Tutti gli esempi con caratteri jolly contengono una sola voce. Ora, quello che mi interessa è se anche questo è permesso:

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

Ecco il ragionamento: ho più host e li ho divisi per l'utente che "possiede" quei host. Poiché i file di registro sono leggibili in tutto il mondo, voglio associare una cartella alla directory home dell'utente, ma limitarla ai file di registro che l'utente "possiede", il che è più facile da ottenere separando i registri in cartelle (e associare -montaggio richiede comunque quello schema). Quindi sto cercando una soluzione per ruotare sia i file di registro /var/log/httpdsia tutti i file di registro nelle sottodirectory di quella directory, senza dover elencare ogni sottodirectory per nome.

In generale, la pagina man non fornisce alcuna idea se siano possibili più voci per le regole con caratteri jolly o solo per percorsi completi. Sto usando logrotate versione 3.7.8-6 che viene fornito con Debian "Squeeze", ma penso che questo non sia necessariamente specifico per una versione di distribuzione o di programma.

Risposte:


119

Sì, puoi utilizzare più caratteri jolly. Puoi testare il tuo file senza eseguire le rotazioni effettive in questo modo:

logrotate -d -f /etc/logrotate.conf
  • -d = Attiva la modalità debug. In modalità debug, non verranno apportate modifiche ai registri o al file di stato logrotate.

  • -f = Indica a logrotate di forzare la rotazione, anche se non ritiene che ciò sia necessario. A volte questo è utile dopo aver aggiunto nuove voci per logrotate o se i vecchi file di registro sono stati rimossi manualmente, poiché i nuovi file verranno creati e la registrazione continuerà correttamente. »


3
molte grazie! Ho appena provato e funziona. Dall'output sembra che ci si possa aspettare che i caratteri jolly funzionino come nella shell.
0xC0000022L

24

Volevo solo chiarire, perché è quello che sono arrivato qui cercando come fare,

È possibile specificare più file di registro per una singola configurazione, ad es

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

//, Non c'è un problema con i diversi percorsi che si verificano su più righe?
Nathan Basanese,

@NathanBasanese Non capisco bene la tua domanda, penso che tu possa puntare le linee del percorso verso i file ovunque sul disco che ti piace, non devono essere tutti nello stesso prefisso di directory.
ThorSummoner,

@NathanBasanese oh, penso di aver capito, avere più destinazioni di rotazione dei log su linee diverse sembra essere un uso normale, ho copiato quel modulo da altri script logrotate.d, ad esempio /etc/logrotate.d/rsyslog
ThorSummoner

5

Dalla pagina man per logrotate :

Si noti che i nomi dei file di registro possono essere racchiusi tra virgolette (e che le virgolette sono necessarie se il nome contiene spazi). Si applicano le normali regole di quotazione della shell, con ', "e \ caratteri supportati.

Ricordarsi di modificare o rimuovere le virgolette quando si passa da uno o più schemi:

Questo funziona:

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

funziona anche questo:

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

Questo non funziona:

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

e nemmeno questo:

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

Confronta con la custodia a modello singolo.

Questo funziona:

'/var/log/*.log' {

e funziona anche questo:

"/var/log/*.log" {

Testato con logrotate 3.10.0


2
Sarebbe interessante sapere se funziona:"/var/space /log/*.log" "/var/log/*.blog"
KajMagnus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.