Gestion des logs avec Logrotate sur CentOS 7

Configuration de logrotate pour garder le contrôle sur vos journaux système et applicatifs.

Logrotate fait partie de ces outils qui veillent discrètement à la bonne santé de votre serveur. Il empêche les fichiers de logs de grossir de façon incontrôlée et de dévorer votre espace disque — ce qui est particulièrement important sur les VPS et les serveurs dédiés, où le stockage est limité et la stabilité primordiale.

Vérifier l'installation

Avant de plonger dans la configuration, assurez-vous que logrotate est bien installé. Sur CentOS 7 il est préinstallé, mais une vérification rapide ne coûte rien :

logrotate --version

Si un numéro de version s'affiche — par exemple logrotate 3.18.0 — vous êtes prêt à continuer.

Structure de la configuration

La configuration de logrotate se répartit en deux endroits :

  • /etc/logrotate.conf — le fichier de configuration principal avec les valeurs par défaut globales
  • /etc/logrotate.d/ — un répertoire de fichiers de configuration par service, qui remplacent ou complètent ces valeurs par défaut

Ensemble, ils définissent quels logs sont tournés, à quelle fréquence, combien de copies archivées conserver, et si elles doivent être compressées.

Le fichier de configuration principal

Ouvrez /etc/logrotate.conf avec votre éditeur habituel — vi, par exemple :

vi /etc/logrotate.conf

Un fichier type ressemble à ceci :

# Rotation hebdomadaire des logs
weekly

# Conserver 4 copies archivées
rotate 4

# Créer un nouveau fichier vide après la rotation
create

# Ajouter la date aux noms des fichiers archivés
dateext

# Compresser les anciens logs (décommenter si nécessaire)
#compress

# Inclure les configurations par service depuis /etc/logrotate.d
include /etc/logrotate.d

# Paramètres des logs système
/var/log/wtmp {
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

Toute directive définie ici s'applique globalement — les configurations de services individuels dans /etc/logrotate.d/ peuvent les remplacer si nécessaire.

Les principales directives en un coup d'œil

  • daily / weekly / monthly / size — fréquence de rotation : selon un planning, ou dès qu'un fichier atteint une certaine taille
  • rotate N — nombre de copies archivées à conserver avant que les plus anciennes soient supprimées
  • create — crée un nouveau fichier de log vide après la rotation, en conservant les droits et le propriétaire d'origine
  • compress — compresse les logs archivés (gzip par défaut)
  • dateext — inclut la date dans le nom du fichier archivé, p. ex. access.log-20250918
  • missingok — n'affiche pas d'erreur si le fichier de log n'existe pas
  • notifempty — ignore la rotation si le fichier de log est vide
  • postrotate ... endscript — exécute un bloc de commandes après la rotation (pratique pour recharger un service)
  • maxage N — supprime automatiquement les archives plus anciennes que N jours

Configurer la rotation pour une application spécifique

Supposons que votre application my-app écrit ses logs dans /var/log/my-app/. Créez un fichier de configuration dédié :

vi /etc/logrotate.d/my-app

Voici un bon point de départ :

/var/log/my-app/*.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    create 0640 www-data www-data
    sharedscripts
    postrotate
        systemctl reload my-app
    endscript
}

Ce que fait chaque ligne :

  • daily — rotation chaque jour
  • rotate 14 — conservation de deux semaines d'archives
  • compress — compression des anciens logs via gzip
  • notifempty — pas de rotation si le fichier de log est vide
  • create 0640 www-data www-data — création du nouveau fichier avec les droits 0640 et le propriétaire www-data
  • postrotate ... endscript — rechargement de l'application après chaque rotation pour qu'elle utilise le nouveau fichier de log

Nos produits et services

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

Tester la configuration

Simulation à blanc (aucune modification appliquée, affiche simplement ce qui se passerait) :

sudo logrotate /etc/logrotate.conf --debug

Tester la configuration d'un service spécifique :

sudo logrotate -d /etc/logrotate.d/my-app

Forcer une rotation immédiate :

sudo logrotate /etc/logrotate.conf --force

Rotation de logs dans des répertoires personnalisés

Si votre application écrit ses logs dans un chemin non standard — par exemple /home/user/logs/ — vous pouvez tout de même les gérer avec un fichier de configuration local :

vi /home/user/logrotate.conf
/home/user/logs/*.log {
    hourly
    missingok
    rotate 24
    compress
    create
}

Créez le répertoire et un fichier de log de test :

mkdir ~/logs
touch ~/logs/access.log

Puis lancez une rotation forcée en indiquant un fichier d'état personnalisé :

logrotate /home/user/logrotate.conf \
  --state /home/user/logrotate-state \
  --verbose --force
  • --state — indique à logrotate où stocker l'enregistrement de sa dernière exécution
  • --verbose — affiche un journal détaillé de toutes ses actions

Automatiser avec Cron

Pour que logrotate s'exécute automatiquement selon un planning, ajoutez une tâche cron :

crontab -e

Par exemple, pour l'exécuter toutes les heures à la 14ᵉ minute :

14 * * * * /usr/sbin/logrotate /home/user/logrotate.conf --state /home/user/logrotate-state

Aide

Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter