J'ai la nouvelle configuration logrotate suivante:
/var/log/nexus/nexus.log {
rotate 7
missingok
compress
delaycompress
copytruncate
daily
}
Quand je lance logrotate -d nexus
, J'obtiens ce qui suit:
reading config file nexus
reading config info for /var/log/nexus/nexus.log
Handling 1 logs
rotating pattern: /var/log/nexus/nexus.log after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
log does not need rotating
Mon dossier/var/log/nexus/contient les éléments suivants:
nexus.log
oldlogs.tar.gz
Pourquoi LogRotate ne fait-il pas tourner le fichier nexus.log? Ce que j'attendais, c'est que le fichier nexus.log aurait été tronqué et qu'un nouveau fichier, quelque chose comme nexus.log-201106241000, aurait été créé.
Très probablement, le fichier journal a moins d'un jour et/ou a été tourné au cours du dernier jour et logrotate se souvient de l'historique.
Si vous ajoutez -f
cela forcera une rotation si vous le voulez vraiment (même si vous n'êtes pas sûr à 100% de la façon dont cela interagit avec -d
).
Vous pouvez consulter l'historique, l'emplacement dépend de votre distribution, mais peut être /var/lib/logrotate/status
. Ce fichier indique la dernière rotation des journaux.
La première fois que vous exécutez logrotate avec une nouvelle configuration de journal, il ne sait pas quand la dernière rotation de journal s'est produite, il écrit donc simplement une ligne d'état dans /var/lib/logrotate/status
à l'effet qu'il a été exécuté aujourd'hui.
Lorsqu'il s'exécute ensuite le jour suivant, il constate que le journal a un jour et le fait pivoter comme prévu. Si vous ne voulez pas attendre, modifiez le fichier d'état de logrotate et indiquez la date d'état de votre journal à la veille.
Lorsque vous exécutez logrotate manuellement, cela fonctionnera comme prévu
Parfois, même si vous exécutez logrotate manuellement, cela ne fonctionnera pas si vous le faites le même jour et avez dateext
où la valeur par défaut n'inclut pas les senconds (par exemple -%Y%m%d
). Pas même si vous modifiez le fichier d'état de logrotate ou lorsque vous utilisez la directive de taille (par exemple size 200M
). Au moins sur CentOS 6, logrotate ne parviendra pas à faire pivoter votre fichier journal car il existe déjà.
Pour résoudre ce problème, vous devez utiliser dateformat
au lieu de dateext
, avec une valeur comme: %Y%m%d%s
.
Voir man logrotate
pour plus d'informations.
Méfiez-vous qu'en exécutant
logrotate -vdf /etc/logrotate.conf
l'événement bien que simulé sera enregistré dans /var/lib/logrotate.status
et les exécutions de logrotate suivantes vous répondront avec la mention
log does not need rotating