Solution 1 :
Ajout de delaycompress
à la section de configuration pour /var/log/messages
résolu le problème.
À partir de man logrotate
:
delaycompress
Postpone compression of the previous log file to the next rota‐
tion cycle. This only has effect when used in combination with
compress. It can be used when some program cannot be told to
close its logfile and thus might continue writing to the previ‐
ous log file for some time.
Je suppose sysklogd
, mon démon syslog, ne peut pas recevoir l'ordre de fermer son fichier journal, et c'est donc nécessaire.
Fait intéressant, la configuration d'origine que j'avais (sans le delaycompress
directive), vient tout droit de man logrotate
(sauf que j'ai changé weekly
à daily
):
# sample logrotate configuration file
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Solution 2 :
C'est difficile à dire avec seulement ces informations, mais je peux vous dire ce qui m'a sauvé plusieurs fois.
Logrotate a une option de débogage qui imprimera un play-by-play de chaque étape qu'il faut pour stdout. Donc, dans ce cas, vous pourriez faire :
logrotate -d /etc/logrotate.conf
La sortie vous dira exactement ce qui se passe. De plus, si vous souhaitez affiner la sortie de débogage, vous pouvez le faire
logrotate -d /etc/logrotate.d/messages
Bien que vous souhaitiez peut-être placer temporairement les options principales de logrotate.conf dans ce bloc de fichiers, car spécifier directement le fichier signifie qu'il n'aura jamais lu les principales options de configuration. Spécifier le fichier individuel signifie également que vous pouvez utiliser le -f
(forcer) en combinaison avec l'option de débogage pour avoir un aperçu d'une rotation réelle du fichier de messages en cours.