« Logrotate » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 128 : | Ligne 128 : | ||
invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate | invoke-rc.d apache2 reload 2>&1 | logger -t apache2.logrotate | ||
fi | fi | ||
endscript | |||
} | |||
</filebox> | |||
<filebox fn=''> | |||
/var/log/nginx/*.log { | |||
daily | |||
missingok | |||
rotate 14 | |||
compress | |||
delaycompress | |||
notifempty | |||
create 0640 www-data adm | |||
sharedscripts | |||
prerotate | |||
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ | |||
run-parts /etc/logrotate.d/httpd-prerotate; \ | |||
fi \ | |||
endscript | |||
postrotate | |||
invoke-rc.d nginx rotate >/dev/null 2>&1 | |||
endscript | endscript | ||
} | } | ||
</filebox> | </filebox> |
Version du 22 avril 2023 à 12:45
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.
Examples
/etc/logrotate.d/apache2 |
/var/log/apache2/*.log { daily missingok rotate 14 compress delaycompress notifempty create 640 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 } |
/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript } |