User Tools

Site Tools


informatique:linux:logrotate

This is an old revision of the document!


Logrotate

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/ldri101z/hdevilli/logs/*log
{
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
  • on voit que ce fichier cible plusieurs fichiers situés dans /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)
  • la section postrotate / endscript encadre une ou des lignes de script qui seront effectuer juste après la rotation de logs ; ici on relance le démon syslogd.
  • sharedscript spécifie que la section postrotate ne s'exécutera qu'une seule fois pour toutes les cibles. En effet il serait inutile de relancer syslogd cinq fois de suite !

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 pas
compress           # permet de compresser les fichiers de logs
delaycompress      # 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 manquant
create <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
informatique/linux/logrotate.1439213778.txt.gz · Last modified: 2015/08/10 13:36 by pteu