Logrotate est un programme qui permet de gérer les fichiers de logs que l'on a sur une machine Linux. Concrètement cela consiste à permuter les fichiers de logs c'est-à-dire de changer de fichier pour ne pas qu'il soit trop volumineux, de les renommer, de les déplacer et/ou de les compresser pour qu'ils prennent moins de place. C'est un outil indispensable, c'est pourquoi il est installé par défaut sur toutes les distributions Linux.
Son fichier principal est /etc/logrotate.conf
, mais comme souvent il inclue tous les fichiers de configuration déposés dans /etc/logrotate.d/
. La syntaxe est la suivante :
cible(s) { paramètres }
Examinons le fichier /etc/syslog.d/syslog
qui s'occupe des logs générés par le programme syslog :
/var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler /tmp_user/toto/logs/*log { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
/var/log
: cron, maillog, messages, secure et spooler. A noter qu'on peut utiliser des jokers (par exemple /var/log/*.log
pour cibler tous les fichiers .log
du répertoire /var/log
)
Les autres options non spécifiées ici seront récupérées dans /etc/logrotate.conf
, à savoir :
rotate 4 # on ne conserve que les 4 plus récents fichiers de logs dateext # on suffixe les fichiers avec la date de la rotation
D'autres options utiles sont disponibles, notamment :
daily
| weekly
| monthly
| yearly
: spécifie l'intervalle de rotation (weekly = une fois par semaine)size <taille>
: provoque une rotation quand le fichier cible dépasse cette taille (on peut utiliser rien, k ou M pour préciser l'unité)minsize <taille>
: définie la taille minimal du fichier de log, sinon on ne le traite pascompress
: permet de compresser les fichiers de logsdelaycompress
: ne compresse pas le premier fichier de rotation (c'est le fameux “messages.1” au milieu des messages.X.gz)missingok
: continue le traitement même en cas de fichier manquantnotifempty
ne pas effectuer la rotation si le fichier est videcreate <umask> <user> <group>
: indique les attributs des fichiers créés (l'umask ainsi que l'utilisateur et le groupe)olddir <dir>
: indique le répertoire où déplacer les fichiers pour effectuer la rotation (NB : ce répertoire doit être sur le même périphérique physique que le journal en cours de permutation)sharedscripts
: précise à logrotate de n'exécuter qu'une fois le script de postrotate par bloc. C'est utile par exemple pour éviter de relancer le démon Apache après la rotation de son access.log, puis à nouveau pour son error.log.
Pour tester un fichier de configuration, utiliser l'option -v
(verbose) ou -d
(debug) ; cela a pour effet de simuler la rotation mais ne modifiera aucun fichier :
logrotate -d /etc/logrotate.d/test
L'utilisation de l'option -f
(force) a pour effet de forcer une rotation même si logrotate ne jugeait pas nécessaire de le faire.