J'ai la nouvelle configuration logrotate suivante:
/var/log/nexus/nexus.log {
rotate 7
missingok
compress
delaycompress
copytruncate
daily
}
Quand je cours logrotate -d nexus
, je reçois 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 à quoi je m'attendais, c'est que le fichier nexus.log aurait été tronqué et qu'un nouveau fichier, du type nexus.log-201106241000, aurait été créé.
Réponses:
Très probablement, le fichier journal date de moins d'un jour et / ou a été soumis à une rotation au cours de la dernière journée et logrotate se souvient de l'historique.
Si vous ajoutez
-f
cela, vous forcerez une rotation si vous le souhaitez vraiment (bien que vous ne sachiez pas à 100% comment cela interagit-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 source
-d
+-f
rend logrotate rapport "a besoin d'une rotation" pour tous les fichiers, même ceux qui ne correspondent paslogrotate
il suffit de modifier la date dans le fichier d'état pour qu'elle soit plus ancienne que la stratégie de rotation, ce qui suffit à convaincre qu'il doit faire pivoter le journal lorsqu'il s'exécute à nouveau.La première fois que vous exécutez logrotate avec une nouvelle configuration de journal, il ne sait pas quand la dernière rotation du journal a eu lieu. Il écrit donc simplement une ligne d'état
/var/lib/logrotate/status
indiquant qu'il a été exécuté aujourd'hui.Lorsqu'il est ensuite exécuté le lendemain, il voit que le journal est vieux d'un jour et le fait pivoter comme prévu. Si vous ne voulez pas attendre, éditez le fichier d'état de logrotate et fixez la date d'état de votre journal au jour précédent.
Lorsque vous exécutez logrotate manuellement, cela fonctionnera comme prévu
la source
Parfois, même si vous exécutez logrotate manuellement, cela ne fonctionnera pas si vous le faites le même jour et que la
dateext
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 size (par exemplesize 200M
). Au moins sur CentOS 6, logrotate ne pourra pas faire pivoter votre fichier journal, car il existe déjà.Pour résoudre ce problème, vous devez utiliser au
dateformat
lieu dedateext
, avec une valeur comme:%Y%m%d%s
.Voir
man logrotate
pour plus d'informations.la source
Attention, en courant
l’événement, bien que seuls les événements simulés soient consignés
/var/lib/logrotate.status
et les exécutions ultérieures de logrotate donneront la réponse mentionnéela source
/var/lib/logrotate.status
) a été observé lors du débogage de la configuration de Logrotate 3.10 sur Alpine linux 3.5 dans un conteneur de menu fixe. Mais il n'y a pas de drapeau Ubuntu dans la définition de la question, n'est-ce pas?/var/lib/logrotate/logrotate.status