Logrotate ne supprime pas les anciens journaux

14

pour une raison quelconque, les anciens fichiers journaux ne sont pas supprimés. Exemple avec apache

Ce que dit le fichier 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
}

Le contenu (rogné) du dossier du journal:

# 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
[...]

En fait, il y en a beaucoup:

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

La commande logrotate avec --verbose me donne ceci:

# /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
[...]

Qu'est-ce qui ne va pas ici? Les journaux tournent mais ne sont pas supprimés? Qu'est-ce que je rate?

SamK
la source

Réponses:

17

votre configuration dit: rotation 2

cela signifie que les fichiers journaux sont tournés 2 fois avant d'être supprimés, donc logrotate ne se soucie que d'environ 2 fichiers.

je suppose que la configuration a été modifiée à un moment donné, car auparavant plus de fichiers journaux étaient conservés, c'était peut-être quelque chose comme la rotation 28. ces anciens fichiers que vous devez supprimer manuellement.

johnshen64
la source
Je ne peux pas prouver la réponse, donc je suppose que c'est vrai. Cependant je ne comprends pas pourquoi access.log.3.gzest toujours présent.
SamK
2
Parce que la rotation 2 ne gère que 2 fichiers, c'est-à-dire .1.gz et .2.gz, et ignore les autres fichiers.
johnshen64
1
J'ai changé la rotation 365 en rotation 90, et access.log.90.gz est la dernière modification à ce jour. Le fichier access.log.91.gz a été supprimé (car logrotate n'en conserve que 90), mais pas le> 91. Donc, johnshen64 a raison, vous devez supprimer quoi que ce soit> 2.
Yvan
Voici une astuce sur la façon de gérer cela automatiquement, c'est-à-dire via la gestion de la configuration sur de nombreux serveurs: serverfault.com/a/636883/9082
Martijn
-3

Les journaux avec le suffixe .gz ne sont pas pris en compte car vous avez spécifié: /var/log/apache2/*.log

Il reste donc 2 .log et tous les fichiers .gz.

Pour changer cela mettre là

/ var / log / apache2 / ** log * ou une expression régulière.

Neg88
la source
Désolé juste un astérisque avant la connexion
Neg88
2
Pour le problème d'astérisque, vous pouvez modifier votre message. Plus généralement, pourquoi pensez-vous que la réponse acceptée est fausse? logrotate veut les fichiers de noms de base et traite les ajouts .gz selon les besoins.
Loi29
Cette réponse est en fait nuisible car il y a un risque qu'elle puisse entraîner une rotation répétée des fichiers, au moins avec certaines versions de logrotate. Il compressera d'abord les fichiers, puis fera correspondre les fichiers compressés et continuera de les faire pivoter.
Richlv