Logrotate
De Banane Atomic
Aller à la navigationAller à la recherche
Généralités
Logrotate est exécuté tous les jour via le timer de systemd configuré dans le fichier /usr/lib/systemd/system/logrotate.timer
Tests
# test la configuration du fichier /etc/logrotate.d/nginx logrotate -d /etc/logrotate.d/nginx # -d → debug: aucune modification n'est faite # -f → force: force la rotation # vérifier quels log ont été archivés cat /var/lib/logrotate.status |
Configuration
/etc/logrotate.conf |
# fréquence de rotation: daily, monthly, weekly weekly # nombre d'archives conservées avant la suppression (file.log.1.gz) rotate 4 # effectuer une rotation lorsque le fichier atteint la taille définie (M pour megabytes, k pour kilobytes) # size remplace la fréquence de rotation size 10M # effectuer une rotation lorsque le fichier atteint la taille définie ET que la la fréquence de rotation est écoulée minsize 10M # ne pas effectuer la rotation si le fichier est vide notifempty # create un fichier de log vide après la rotation create # il est possible de spécifier les droits, le user et le group du nouveau fichier create xxx user group # par défaut, même mode, user et group que le fichier précédent # zipper le fichier de log avant la rotation compress # zipper le fichier de log lors de la prochaine rotation. Fonctionne seulement si l'option « compress » est activée. # Utile si l'application ne peut fermer immédiatement son accès au fichier de log et continue à écrire dedans. delaycompress # déplacer les fichiers dans un autre répertoire après la rotation olddir /var/log/archive # liste des fichiers à ignorer, par défaut: .rpmorig, .rpmsave, .swp, .rpmnew, ~ # l'utilisation de « + » permet d'ajouter de nouveaux fichiers à ignorer, sinon la liste est écrasée tabooext + .pacorig .pacnew .pacsave /var/log/dossier/*log { # si le fichier de log n'existe pas, ne pas générer d'erreurs missingok # n’exécuter qu'une seule fois prescript et postscript pour tous les fichiers correspondant au pattern sharedscripts # par défaut prescript et postscript sont exécutés pour chaque fichier de log correspondant au pattern # code exécuté avant la rotation prerotate code endscript # code exécuté après la rotation postrotate code endscript } |
nginx
/etc/logrotate.d/nginx |
/var/log/nginx/*log { size 5M rotate 2 missingok sharedscripts compress postrotate test ! -r /var/run/nginx.pid || kill -USR1 `cat /var/run/nginx.pid` endscript } |
Le fichier /var/run/nginx.pid contient l'id du processus nginx en cours d’exécution.
kill -USR1 envoie un signal à nginx pour qu'il recharge ses fichiers de log.
php-fpm
PHP 7.0: php-fpm does no longer provide a logrotate configuration. Instead syslog/journald is used by default |
/etc/logrotate.d/php-fpm |
/var/log/php-fpm.log { missingok notifempty compress delaycompress rotate 1 weekly postrotate /bin/kill -SIGUSR1 `cat /run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true endscript } |
Erreurs
error: failed to rename ... to (null): Permission denied
Le dossier /var/log/xxx doit avoir les droits http:log 750.