Je voulais faire la rotation des journaux de MongoDB, alors je l'ai vérifié et défini. (La version est 3.4)
Je veux faire pivoter le journal une fois par jour. Je veux nommer le fichier journal après la rotation mongod.log_yyyymmdd. Je veux compresser automatiquement. Je souhaite le supprimer automatiquement après un certain temps au lieu de continuer à l'accumuler.
Définir comme suit dans logrotate
# vi /etc/logrotate.d/mongod
/usr/local/var/log/mongodb/mongod.log
{
missingok
daily
dateext
rotate 30
create
compress
delaycompress
postrotate
/bin/kill -SIGUSR1 `cat /var/run/mongodb/mongod.pid 2> /dev/null` 2> /dev/null || true
find /data/mongodb/logs -type f -size 0 -regextype posix-awk -regex "^\/usr\/local\/var\/log\/mongodb\/mongod\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}-[0-9]{2}-[0-9]{2}$" -execdir rm {} \; >/dev/null 2>&1
endscript
}
Quand je connecte MongoDB avec kill -SIGUSR1, MongoDB crée un fichier journal vide nommé mongod.log.yyyy-mm-ddTxx-xx-xx, donc j'utilise find pour le supprimer.
Si vous choisissez nocreate au lieu de create, MongoDB perdra la trace du fichier journal. MongoDB se termine anormalement au moment de la rotation.