Ceci est une ancienne révision du document !
Principal intérêt de logrotate: limiter l'accroissement à l'infini de la taille des fichiers logs.
Pour chaque fichier journal logrotate agit en 2 étapes:
Le système gère la planification de l’exécution régulière de logrotate, il suffit d'éditer les fichiers de configuration dans /etc/logrotate.d/ et de ne plus s'en soucier.
daily,weekly,monthly | Périodicité de rotation du fichier de log |
---|---|
rotate n | Conserve n rotations |
create nnnn user group | Création d'un fichier vide après rotation avec les droits d'accès spécifiés ici. |
compress, nocompress | L' archive du log sera compressée ou pas. |
delaycompress | Si la compression est active, elle a lieu lors de la prochaine rotation. |
missingok | N’arrête pas le processus et poursuit avec le fichier de log suivant. |
notifempty | Pas de rotation si le fichier de log est vide. |
size | Définir une taille limite déclenchant la rotation. Cette directive est prioritaire sur la périodicité de rotation. |
prerotate/endscript | Actions/commandes a exécuter avant rotation. |
postrotate/endscript | Actions/commandes a exécuter après rotation. |
sharedscripts | Les scripts pre/postrotate sont exécutés une seule fois pour le fichier log considéré et non pas à chaque rotation. |
su user group |
Les directives sont groupées entre crochets { } et s'appliquent sur un ou plusieurs fichiers journaux:
/path/to/file-1.log { directive 1 directive 2 ... directive n } /path/to/file-2.log /path/to/file-3.log ... /path/to/file-n.log { directive 1 directive 2 ... directive n }
logrotate trace ses actions dans le fichiers /var/lib/logrotate/status le fichier texte indique pour chaque entrée le nom du fichier de log et le timestamp de la dernière altération.
Pour lancer manuellement logrotate utiliser l'option -f ou --force avec le fichier de configuration à tester (configuration globale ou dédiée)
logrotate --verbose --force /etc/logrotate.d/nextcloud logrotate --verbose --force /etc/logrotate.conf
Pour déboguer/vérifier le bon fonctionnement la configuration courante utiliser l'option -d ou --debug:
logrotate -d /etc/logrotate.conf
Par sécurité logrotate interrompt le processus de rotation si les droits d'écritures sur le répertoire contenant les logs ne sont pas limités au groupe root. L'erreur est clairement remontée lors de l’exécution de logrotate avec l'option debug:
error: skipping "/path/to/log/file.log" because parent directory has insecure permissions (It' s world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
Si un groupe autre que root a le droit d’écriture sur le dossier contenant le fichier log, il doit être précisé dans la configuration de logrotate via la directive su afin que la rotation puisse s’effectuer.
# Exemple de rotation de fichiers de logs # contenus dans un dossier ayant pour proprietaire www-data /srv/appweb/log/access.log /srv/appweb/log/error.log /srv/appweb/log/php_error.log { su www-data www-data weekly rotate 4 nocompress missingok create 0640 www-data www-data }
La rotation des logs de l'hôte virtuel apache s'est bien exécutée mais apache continue à écrire dans le fichier précédent xxx.log.1 au lieu d'utiliser xxx.log
Dans ce cas, utiliser la directive postrotate/endscript pour recharger la configuration apache après rotation:
postrotate /usr/sbin/apache2ctl -k graceful endscript