Logrotate et ses subtilités à propos des tailles de fichiers
Pour éviter de remplir les disques de son système avec des fichiers de log, cet outil est efficace et simple à utiliser.
A quelques subtilités près, notamment avec l’option size
.
Spécifier la taille ET la période
Il arrive qu’on ait des tâches cron qui lancent logrotate plus qu’une fois dans une journée.
Ou bien qu’on veuille faire une rotation hebdomadaire, sauf si un fichier dépasse une certaine taille.
Dans tous les cas, l’option size
peut sembler intéressante et c’est souvent celle qui saute aux yeux à la lecture du manuel.
Mais elle ne peut pas être couplée avec une période (daily
, weekly
, etc.) car elle est prioritaire, quelle que soit la date de rotation du fichier.
D’ailleurs le manuel n’est pas clair là dessus, et ne le mentionne que pour une autre option : minsize
:
minsize size
Log files are rotated when they grow bigger than size bytes, but not before the additionally specified time interval (daily, weekly, monthly, or yearly). The related size option is similar except that it is mutually exclusive with the time interval options, and it causes log files to be rotated without regard for the last rotation time. When minsize is used, both the size and timestamp of a log file are considered.
Bon, ça tombe bien, c’est cette dernière qui est inéressante pour le cas mentionné.
Il y a même une petite soeur bien sympathique depuis la version 3.8.1 en la présence de maxsize
:
maxsize size
Log files are rotated when they grow bigger than size bytes even before the additionally specified time interval (daily, weekly, monthly, or yearly). The related size option is similar except that it is mutually exclusive with the time interval options, and it causes log files to be rotated without regard for the last rotation time. When maxsize is used, both the size and timestamp of a log file are considered.
Surtout sur les grosses périodes.
Pour les petites, je trouve minsize
plus pertinente.
Utilisation en ligne de commande
Plutôt que d’attendre que la prochaine tâche cron s’exécute, on peut lancer logrotate à la main, pour valider les règles rédigées.
La forme à utiliser est logrotate -d /etc/logrotate.d/fichier_regles
.1
L’option -d
servant au débug, pas besoin d’utiliser -v
, qui est ajouté implicitement dans ce cas.
La sortie produite est suffisamment explicite pour trouver d’éventuels problèmes.
Cas particulier
Il y a aussi l’option -f
pour forcer la rotation des fichiers, même s’il n’y en a pas besoin (par rapport aux règles de rotation).
Ça parait bête comme ça, mais j’ai beaucoup vu d’exemples sur internet avec cette option, et de questions liées vu les fichiers étaient modifiés de manière innatendue.
Aussi, pensez à vérifier les lignes de cron2 si jamais vous avez des rotations plus nombreuses que prévues. Un script d’appel à cron possède peut-être cette option.
A noter qu’il peut être utile d’utiliser -f
en cas de purge manuelle des logs, d’ajout de nouvelles règles, ou de suppression du fichier d’index.