Rotation des logs avec logrotate

La gestion des fichiers de logs est une tâche importante qui consiste à les garder le plus longtemps possible tout en évitant la saturation de l’espace disque. logrotate est la solution qui réalise très bien cette tâche.

logrotate permet d’effectuer la compression et la rotation des fichiers de logs. Il s’utilise facilement via des fichiers de configurations :

  • /etc/logrotate.conf : le fichier de configuration global contenant les paramètres par défaut
  • /etc/logrotate.d/ : le répertoire contenant les fichiers de configuration des applications installés qui utilisent ce système (par exemple : cups, yum, apache …)

Utiliser logrotate

Pour gérer les fichiers de logs d’une application avec logrotate il faut créer un fichier portant le même nom que l’application et le placer dans le répertoire /etc/logrotate.d/. Ensuite il faut éditer ce fichier est saisir les instructions adéquates. Voici la structure à suivre :

/log/file/path {
    directive1 [args]
    directive2 [args]
    # ...
}

Voici un exemple de directives possible :

  • hourly | daily | weekly [weekday] | monthly | yearly : spécifie à quel moment le fichier “tourne” (cad. renommé avec possibilité de compression ou supprimé). Pour weekly il est possible de préciser le jour de la semaine (0 pour dimanche, 1 pour lundi, 2 pour mardi, …)
  • __ maxsize :__ cette option est complémentaire aux options d’interval de temps (cf. ci-dessus). Le fichier de log “tourne” si il est plus grand que la taille maximum précisé en octets . I peut tourner avant la rotation basé sur le timestamp
  • size : cette option ne peut pas être utilisé avec les options d’interval de temps. Le fichier de log “tourne” si il est plus grand que la taille maximum précisé en octets
  • dateext : écrit une date en extension sur les anciens fichiers (YYYYMMDD) à la place de celle par défaut qui utilise un suffixe numérique de la forme .n (par exemple dnf.log.1). Il est passible de configurer le format d’affichage de cette date via l’option *dateformat *
  • compress : les anciennes versions des fichiers de logs sont compréssés
  • notifempty : ne fait pas la rotation de fichier si celui-ci est vide
  • olddir : précise le répertoire dans lequel placer les anciens logs
  • create [mode] : spécifie les droits d’accès au nouveau fichier de log (droit du fichier en octal, utilisateur propriétaire et groupe)
  • missingok : ne pas remonter d’erreur si un fichier de log est absent. Cette option et utile si il y a plusieurs sections dans un fichier de configuration, ainsi si le premier fichier de log n’existe pas, on passe au suivant (la section suivante)
  • rotate : nombre de fichiers conservés (au delà le fichier le plus ancien est supprimé)

Un exemple complet

Voici un exemple complet pour la gestion des fichiers de logs d’une application foo avec la configuration suivante :

  • une rotation par jour (sauf exception si le fichier dépasse 10 Mo)
  • en ne gardant que trois anciens fichiers
  • avec les droits 640 pour root:adm

Création du fichier de configuration :

touch /etc/logrotate.d/foo

Edition du fichier :

/var/log/foo.log {
    rotate 3
    daily
    maxsize 10M
    create 640 root adm
}

Ce qui donne au bout de dix jours :

ls /var/log/foo*
foo.log  foo.log.1  foo.log.2  foo.log.3
# les fichiers ayant les droits :
# -rw-r-----. 1 root adm
Vous avez aimé ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

cinq × cinq =