Logrotate non rimuove i vecchi registri


14

per qualche motivo i vecchi file di registro non vengono eliminati. Esempio con apache

Cosa dice il file conf:

$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    weekly
    missingok
    rotate 2
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            /etc/init.d/apache2 reload > /dev/null
    endscript
}

Il contenuto (ritagliato) della cartella di registro:

# ls /var/log/apache2/
access.log       error.log.26.gz                other_vhosts_access.log.20.gz  access-ssl.log.14.gz
access.log.1     error.log.27.gz                other_vhosts_access.log.21.gz  access-ssl.log.15.gz
access.log.2.gz  error.log.28.gz                other_vhosts_access.log.22.gz  access-ssl.log.16.gz
access.log.3.gz  error.log.2.gz                 other_vhosts_access.log.23.gz  access-ssl.log.17.gz
[...]

In realtà ce ne sono molti:

# ls /var/log/apache2/ | wc -l
85

Il comando logrotate con --verbose mi dà questo:

# /usr/sbin/logrotate --verbose  /etc/logrotate.conf
[...]
reading config file apache2
reading config info for /var/log/apache2/*.log
[...]
rotating pattern: /var/log/apache2/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
  log does not need rotating
considering log /var/log/apache2/error.log
  log does not need rotating
considering log /var/log/apache2/other_vhosts_access.log
  log does not need rotating
considering log /var/log/apache2/pbpdhg-ssl.log
  log does not need rotating
not running postrotate script, since no logs were rotated
[...]

Cosa c'è che non va qui? I registri vengono ruotati ma non rimossi? Cosa mi sto perdendo?

Risposte:


17

la tua configurazione dice: ruota 2

ciò significa che i file di registro vengono ruotati 2 volte prima di essere rimossi, quindi logrotate si occupa solo di 2 file.

la mia ipotesi è che la configurazione sia stata cambiata ad un certo punto, perché in precedenza venivano conservati più file di registro, forse era qualcosa come ruotare 28. questi file più vecchi devono essere rimossi manualmente.


Non riesco a provare la risposta, quindi credo sia giusto. Tuttavia non capisco perché access.log.3.gzsia ancora presente.
SamK,

2
Perché ruotare 2 gestisce solo 2 file, ovvero .1.gz e .2.gz, e ignora altri file.
johnshen64,

1
Ho cambiato il ruotare 365 per ruotare 90, e il access.log.90.gz è l'ultimo modificato finora. Access.log.91.gz è stato rimosso (poiché logrotate mantiene solo 90), ma non il> 91. Quindi johnshen64 ha ragione, devi rimuovere qualsiasi cosa> 2.
Yvan

Ecco un suggerimento su come
gestirlo

-3

I log con suffisso .gz non sono considerati perché hai specificato: /var/log/apache2/*.log

Quindi rimangono 2 .log e tutti i file .gz.

Per cambiare questo mettere lì

/ var / log / apache2 / ** log * o qualche espressione regolare.


Scusate solo un asterisco prima del registro
Neg88

2
Per il problema dell'asterisco, puoi modificare il tuo post. Più in generale, perché pensi che la risposta accettata sia sbagliata? logrotate desidera i file dei nomi di base e gestisce le aggiunte .gz secondo necessità.
Legge 29

Questa risposta è in realtà dannosa poiché esiste il rischio che i file vengano ruotati più e più volte, almeno con alcune versioni logrotate. Comprime prima i file, quindi abbina i file compressi e continua a ruotarli.
Richlv,
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.