logrotate diariamente e tamanho?

38

Se uma configuração logrotate for especificada com parâmetros "size" e "daily", qual deles tem precedência? Onde isso é documentado? Eu gostaria que essas rotações ocorressem como uma operação OR booleana, ou seja, se os logs tiverem um dia de idade, eles serão rotacionados, OU se forem maiores que um determinado tamanho, também serão rotacionados. No entanto, logrotate está atualmente usando apenas a diretiva "size" e parece estar ignorando a diretiva "daily". O Logrotate está configurado para ser executado a cada hora. OS é linux, Red Hat e derivados Debian.

Além disso, estou especificando "diariamente" primeiro e depois "tamanho" desde o início do arquivo. Não tenho certeza se o pedido é importante, mas em qualquer caso, é preciso primeiro entrar no arquivo de configuração ...

Obrigado!

    
por cat pants 22.05.2012 / 19:54

4 respostas

55

Se a diretiva tamanho for usada, o logrotate ignorará o diário , semanal , mensal e < directivas strongs> anuais . Isso não está claro na documentação quando você executa o comando man logrotate . No entanto, isso pode ser confirmado na prática e é mencionado em algumas postagens arbitrárias no blog como essa a>.

Existe uma diretiva chamada minsize que, de acordo com a página de manual logrotate, é a única diretiva de tamanho que pode ser usada em conjunto com as de tempo. No entanto, ainda não é o que você quer. A utilização de minsize com diariamente diz essencialmente: gira os registos diariamente, mas apenas quando têm pelo menos #MB de tamanho .

Até hoje não encontrei nenhuma maneira com o logrotate para fazer a condição que você precisa: girar todos os dias, a menos que o tamanho exceda #MB, caso em que rodar imediatamente . Eu não acho que isso é suportado usando apenas diretivas logrotate. Pode ser possível fazer com alguns scripts inteligentes por meio das diretivas de gancho de script como prerotate , postrotate , firstaction e lastaction .

Atualizar :

A partir do logrotate 3.8.1, maxsize e timeperiod são suportados juntos, o que seria a solução ideal. Veja a resposta a este post:

    
por 04.10.2012 / 01:29
1

Se você adicionar Diariamente, ele será rotacionado a cada dia, mesmo se a condição Tamanho for atendida. Se você adicionar a condição de tamanho, também poderá obter duas rotações em um dia, dependendo de quão detalhado é o logging.

Se o Diário for o primeiro no script, o Tamanho pode não ser disparado.

    
por 22.05.2012 / 20:11
1

Na verdade, minha página man na Red Hat parece ser bastante clara sobre as diferenças entre tamanho e minsize:

minsize size

          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.
    
por 01.08.2013 / 18:12
1

A primeira resposta por @egg é, de acordo com minhas experiências com o logrotate, não é verdade!

Se diariamente, mensalmente, ... vir primeiro e depois da diretiva tamanho , diário, mensal, ... será ignorado e a diretiva tamanho será aplicada ao arquivo de log.

Da mesma forma, quando uso pela primeira vez a diretiva tamanho e as diretivas diárias, semanais, mensais e anuais , a diretiva tamanho será ignorada.

    
por 16.09.2014 / 13:25