Logrotate est un programme qui permet de gérer la croissance et l'historique des fichiers de logs. # Principe général Le programme est exécuté régulièrement, avec un fichier de configuration en paramètre. Par défaut, c'est `/etc/logrotate.conf` qui charge toutes les configurations présentes dans `/etc/logrotate.d/` Les paquets des programmes qui génèrent des logs (par exemple Apache, Postfix, ...) fournissent généralement une configuration pour logrotate. # Stratégie de gestion Il y a de très nombreuses stratégies de gestion des logs, en voici quelques unes illustrées. cf. ## Applications Ruby Pour les serveurs d'application comme Puma, Unicorn, ... : ~~~ /home/USER/apps/production/*/shared/log/*.log { su USER GROUP weekly missingok rotate 52 compress delaycompress notifempty dateext dateformat .%Y-%m-%d dateyesterday copytruncate } ~~~ Cette stratégie va faire une rotation hebdomadaire, conserver 52 semaines (1 an), compresser les logs passés après les avoir datés. L'instruction `copytruncate` est importante car le descripteur de fichier ouvert par l'application ne va pas changer. Pour vérifier qu'il n'y a pas d'erreurs de syntaxe : ~~~ logrotate /etc/logrotate.d/ ~~~ ## FAQ Si erreur du type : ` error: skipping "*.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root")` Uniquement l'utilisateur concerné par la gestion des logs doit avoir un accès en écriture à ce dossier. Soit un chmod 750 marche bien.