Auteur Sujet: Logrotate et la gestion des dossiers multiples avec "prerotate" et "postrotate"  (Lu 584 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
J'ai une question pour l'utilisation de logrotate avec Apache2.

Mon Apache crée des logs dans deux dossiers différents :
- des logs "poubelle" qui sont gardés 4 jours (dans un ramdisque pour ne pas user le SSD) ;
- des logs plus classiques, à garder 70 jours.

Voici mon fichier logrotate. La problématique vient des scripts "prerotate" et "postrotate".

Les deux dossiers étant traités à quelques millisecondes d'écart, il n'est pas possible de traiter deux fois le "prerotate" et deux fois le "postrotate".

Voici une solution, pas super élégante, où j'ai mis le "prerotate" (inutilisé dans mon cas) sur le premier dossier et le "postrotate" sur le second dossier.

Si on ne fait pas un invoke-rc.d apache2 reload aprés la rotaiton des logs, apache continue d'écrire dans le même fichier qui a changé de nom : le fichier access.log reste vide alors que access.log.1 continue de recevoir les logs.

Je suis intéressé pour faire la chose proprement, si vous avez des conseils !

$ cat /etc/logrotate.d/apache2

/var/log/apache2/*.log {
    daily
    missingok
    rotate 4
    nocompress
    notifempty
    create 644 root adm
    sharedscripts
    prerotate
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then
            run-parts /etc/logrotate.d/httpd-prerotate
        fi
    endscript
    postrotate
        #if pgrep -f ^/usr/sbin/apache2 > /dev/null; then
        #    invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate
        #fi
    endscript
}
/data/log/*.log {
    daily
    missingok
    rotate 70
    nocompress
    ifempty
    create 666 root adm
    sharedscripts
    prerotate
        #if [ -d /etc/logrotate.d/httpd-prerotate ]; then
        #    run-parts /etc/logrotate.d/httpd-prerotate
        #fi
    endscript
    postrotate
        if pgrep -f ^/usr/sbin/apache2 > /dev/null; then
            invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate
        fi
    endscript
}


Encore une question : Quand on change les fichiers de configuration de logrotate, il n'est pas nécessaire de faire une opération type "reload" pour qu'ils soient pris en compte ?