Est-il possible de prendre logrotate
en compte les fichiers journaux d'un répertoire et de tous ses sous-répertoires? (c.-à-d. sans lister explicitement les sous-répertoires.)
62
Quelle est la profondeur de vos sous-répertoires?
/var/log/basedir/*.log /var/log/basedir/*/*.log {
daily
rotate 5
}
Fera tourner tous les fichiers .log dans basedir / ainsi que tous les fichiers .log dans n'importe quel enfant direct de basedir. Si vous devez également approfondir un niveau, ajoutez-en un autre /var/log/basedir/*/*/*.log
jusqu'à ce que chaque niveau soit couvert.
Cela peut être testé en utilisant un fichier de configuration séparé de logrotate qui contient une contrainte qui ne sera pas remplie (une taille élevée), puis en exécutant le journal en rotation vous-même en mode prolixe
logrotate -d testconfig.conf
L'indicateur -d listera chaque fichier journal qu'il envisage de faire pivoter.
-d
met logrotate en mode de fonctionnement à sec (c’est-à-dire qu’il ne change rien).-f
option indique à logrotate de "forcer l'exécution". un mot simple à la fin de la commande est un fichier de configuration à utiliser à la place de la valeur par défaut. celalogrotate -f /some/config
signifie donc exécuter avec ce fichier de configuration, et toujours exécuté même si le fichier de configuration indique qu'il n'est pas encore temps de s'exécuter. À mes yeux inexpérimentés et à mon prédécesseur qui a fait un travail cron avec cela, il me semblait que-f
c'était juste spécifier le fichier de configuration. Assez déroutant.Dans mon cas, la profondeur des sous-répertoires peut changer sans préavis. J'ai donc configuré un script bash pour trouver tous les sous-répertoires et créer une entrée de configuration pour chaque répertoire.
Il est également important pour moi de conserver la structure des sous-répertoires après la rotation, ce que les caractères génériques (c.-à-d. La réponse de @ DanR) ne semblaient pas faire. Si vous effectuez des rotations quotidiennes de journaux, vous pouvez placer ce script dans un cron-job quotidien.
Comme @DanR l'a suggéré, testez avec
logrotate -d
la source
C'est un vieux fil, mais vous pouvez faire ce qui suit:
Ces deux étoiles correspondront à zéro ou plusieurs répertoires. Vous devez cependant faire attention à la manière dont vous définissez la rotation des fichiers journaux, car vous pouvez faire pivoter des fichiers déjà pivotés. Je vais citer le manuel de logrotate ici.
la source
globstar
avant de lancer logrotate. Cela l'activera pour bashshopt -s globstar
.