59 votes

logrotate quotidien et taille ?

Si une configuration de logrotate est spécifiée avec les paramètres "size" et "daily", lequel est prioritaire ? Où cela est-il documenté ? J'aimerais que ces rotations se produisent comme une opération booléenne OU, c'est-à-dire que si les journaux datent d'un jour, ils font l'objet d'une rotation, OU s'ils sont plus grands qu'une certaine taille, ils feront également l'objet d'une rotation. Cependant, logrotate n'utilise actuellement que la directive "size", et semble ignorer la directive "daily". Logrotate est configuré pour s'exécuter toutes les heures. Le système d'exploitation est linux, dérivés de Red Hat et Debian.

De plus, je spécifie d'abord "daily", puis "size" depuis le début du fichier. Je ne suis pas sûr que l'ordre ait de l'importance, mais dans tous les cas, l'un des deux doit apparaître en premier dans le fichier de configuration...

Merci !

2 votes

0 votes

> les définitions locales l'emportent sur les définitions globales, et les définitions ultérieures > remplacent les définitions antérieures extrait de la page de manuel de logrotate 3.8.7

80voto

Eder Gusatto Points 411

Si le taille est utilisée, logrotate ignorera la directive quotidien , hebdomadaire , mensuel y annuel des directives. Ce n'est pas clair dans la documentation lorsque vous exécutez la commande man logrotate commandement. Cependant, elle peut être confirmée en pratique, et est mentionnée dans certains articles de blog arbitraires comme celui-ci .

Il existe une directive appelée taille minimale qui, selon la page de manuel de logrotate, est la seule directive de taille qui peut être utilisée en conjonction avec les directives de temps. Cependant, ce n'est toujours pas ce que vous voulez. Utilisation de taille minimale avec quotidien dit essentiellement : faire tourner les journaux quotidiennement, mais seulement lorsqu'ils ont une taille d'au moins #MB .

Jusqu'à présent, je n'ai trouvé aucun moyen avec logrotate de faire la condition que vous demandez : rotation quotidienne, sauf si la taille dépasse #MB, auquel cas la rotation est immédiate. . Je ne pense pas que cela soit possible en utilisant uniquement les directives logrotate. Il pourrait être possible de le faire avec un script astucieux via les directives script hook du type prérotation , postrotation , première action y dernière action .

Mise à jour :

A partir de logrotate 3.8.1, maxsize et timeperiod sont supportés ensemble, ce qui serait la solution idéale. Voir la réponse à ce message : Comment faire tourner le journal en fonction d'un intervalle, sauf si le journal dépasse une certaine taille ?

4 votes

La meilleure option serait probablement d'utiliser deux commandes cron séparées, une pour l'exécuter quotidiennement avec la conf par défaut, et une toutes les x minutes qui prend une config avec seulement les fichiers dont vous vous inquiétez du débordement en utilisant la directive size et non la daily.

8 votes

À partir de logrotate 3.8.1, maxsize y timeperiod sont prises en charge. Par serverfault.com/questions/474941/

1 votes

@belacqua J'utilise 3.8.7 et timeperiod n'est pas dans le manuel.

5voto

M. S. Points 131

La première réponse de @egg est, selon mes expériences avec logrotate, fausse !

Si quotidien, mensuel, ... venez premièrement et après cela taille directive, quotidien, mensuel, ... seront ignorés et taille s'appliquera au fichier journal.

De même, lorsque j'utilise pour la première fois le taille alors la directive quotidien, hebdomadaire, mensuel et annuel les directives de l taille sera ignorée.

0 votes

Et le quotidien , mensuel , ... y taille doit précéder la directive include /path/of/logrotate.d/ pour prendre effet pour chaque fichier journal spécifique configuré dans la rubrique /chemin/de/logrotate.d/ .

1voto

Justin k Points 223

Si vous ajoutez Daily, il y aura une rotation chaque jour, même si la condition Size est remplie. Si vous ajoutez également la condition de taille, il se peut que vous obteniez deux rotations en un jour, selon le degré de verbosité de la journalisation.

Si Daily passe en premier dans le script alors Size peut ne pas se déclencher.

0 votes

Utiliser l'option verbose 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 avoir la priorité sur des règles plus générales.

0 votes

Un plus grand nombre de rotations est acceptable, car c'est le comportement attendu. (OU booléen) Cependant, mon problème est que ces rotations ne se produisent pas. Il semble que ce soit un bogue (peut-être une caractéristique) de log rotate, car je ne vois pas que l'ordre des directives soit important ou documenté quelque part.

0 votes

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.

1voto

wroscoe Points 172

En fait, ma page man sur Red Hat semble être assez claire sur les différences entre size et minsize :

Taille minimale

          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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X