logrotate quotidiennement et taille?

40

Si une configuration de logrotate est spécifiée avec les paramètres "size" et "daily", laquelle est prioritaire? Où est-ce documenté? Je voudrais que ces rotations se produisent comme une opération booléenne OU, c’est-à-dire que si les journaux sont vieux d’un jour, ils sont soumis à une rotation, OU s’ils sont supérieurs à une certaine taille, ils seront également soumis à une rotation. Cependant, logrotate n'utilise actuellement que la directive "size" et semble ignorer la directive "daily". Logrotate est configuré pour fonctionner toutes les heures. OS est dérivé de Linux, Red Hat et Debian.

De plus, je spécifie «quotidien» en premier, puis «taille» à partir du début du fichier. Pas sûr que l'ordre soit important, mais dans tous les cas, il faut d'abord entrer dans le fichier de configuration ...

Merci!

pantalon de chat
la source
2
Voir aussi serverfault.com/questions/474941/…
belacqua le
> les définitions locales remplacent les définitions globales et les définitions ultérieures> remplace les précédentes de la page de manuel de logrotate 3.8.7
John Bob Joe

Réponses:

62

Si la directive size est utilisée, logrotate ignorera les directives quotidienne , hebdomadaire , mensuelle et annuelle . Cela n’est pas clair dans la documentation lorsque vous exécutez la man logrotatecommande. Toutefois, cela peut être confirmé dans la pratique et est mentionné dans certains billets de blog arbitraires tels que celui-ci .

Il existe une directive appelée minsize qui, selon la page de manuel logrotate, est la seule directive de taille pouvant être utilisée conjointement avec les instructions time. Cependant, ce n'est toujours pas ce que vous voulez. En utilisant minsize avec tous les jours , dit essentiellement: tourner les journaux tous les jours, mais seulement quand ils sont au moins #MB taille .

À ce jour, logrotate ne trouve aucun moyen de remplir la condition requise: effectuez une rotation tous les jours, à moins que la taille ne dépasse # Mo. Dans ce cas, effectuez une rotation immédiate . Je ne pense pas que cela soit supporté en utilisant uniquement les directives logrotate. Il serait peut-être possible d'utiliser un script astucieux via les directives de hook de script telles que prérotate , postrotate , firstaction et lastaction .

Mise à jour :

À partir de logrotate 3.8.1, maxsizeet timeperiodsont pris en charge ensemble, ce serait la solution idéale. Voir la réponse à ce message: Comment faire pivoter le journal en fonction d'un intervalle sauf si le journal dépasse une certaine taille?

gregtczap
la source
4
La meilleure option consisterait probablement à utiliser deux commandes cron distinctes, exécutées quotidiennement avec la configuration par défaut, et une commande toutes les x minutes prenant une configuration comportant uniquement les fichiers dont vous craignez le débordement à l’aide de la directive size et non quotidiennement.
SilverbackNet
8
À partir de logrotate 3.81, maxsizeet timeperiodsont pris en charge. Par serverfault.com/questions/474941/…
belacqua
1
@belacqua J'utilise 3.8.7 et timeperiod n'est pas dans l'homme.
JorgeeFG
La version correcte est en réalité 3.8.1, pas 3.81.
Tom Miller
2

La première réponse de @egg est, selon mon expérience avec logrotate, pas vraie!

Si quotidien, mensuel, ... viennent en premier et après cette directive de taille , quotidiens, mensuels, ... seront ignorés et que la directive de taille s'appliquera au fichier journal.

De même, lorsque j'utilise pour la première fois la directive de taille, puis les directives quotidiennes, hebdomadaires, mensuelles et annuelles , la directive de taille est ignorée.

MME
la source
1

Si vous ajoutez Quotidien, il changera de jour en jour même si la condition de taille est remplie. Si vous ajoutez également la condition de taille, vous pouvez obtenir deux rotations en une journée, en fonction de la consignation de la journalisation.

Si Daily commence en premier dans le script, Size ne peut pas être déclenché.

Paul Hickox
la source
utilisez l'option verbeuse pour voir quelles règles sont utilisées. D'après mes tests, je pense que seule la dernière règle est utilisée car des règles plus spécifiques peuvent remplacer des règles plus générales.
Bram
Plus de rotations sont acceptables, car ce serait le comportement attendu. (booléen OU) Cependant, mon problème est que ces rotations ne se produisent pas. Cela semble être un bogue (éventuellement une fonctionnalité) de la rotation des journaux, car je ne vois pas dans quel ordre les directives sont importantes ou documentées.
pantalon chat
pouvez-vous donner un exemple de votre logrotate.conf et des fichiers que vous essayez de cibler? Daily n'a pas d'autre condition que la progression dans le temps. La taille est conditionnelle.
Paul Hickox
/tmp/output.log {taille quotidienne: 1k, rotation 5}
pantalon pour chat
1
Ce fichier est soumis à une rotation lorsque la taille est supérieure à 1 Ko, mais il n’est pas soumis à une rotation quotidienne comme prévu et souhaité.
pantalon de chat
1

En fait, ma page de manuel sur Red Hat semble être assez claire sur les différences entre taille et taille:

taille min.

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.
Geoffrey M.
la source