Se uma configuração de logrotate for especificada com os parâmetros "size" e "daily", qual deles tem precedência? Onde isso está 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, eles também serão rotacionados. No entanto, atualmente o logrotate está apenas usando 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 no arquivo de configuração ...
Obrigado!
Respostas:
Se a diretiva de tamanho for usada, o logrotate ignorará as diretivas diárias , semanais , mensais e anuais . Isso não está claro na documentação quando você executa o
man logrotate
comando. No entanto, isso pode ser confirmado na prática e é mencionado em algumas postagens arbitrárias no blog como esta .Há uma diretiva chamada minsize que, de acordo com a página do manual logrotate, é a única diretiva de tamanho que pode ser usada em conjunto com as da hora. No entanto, ainda não é o que você deseja. O uso do minsize com o diário diz essencialmente: gire os logs diariamente, mas somente quando tiverem pelo menos # MB de tamanho .
Até o momento, não encontrei nenhuma maneira com o logrotate para executar a condição necessária: gire todos os dias, a menos que o tamanho exceda #MB, nesse caso, gire imediatamente . Eu não acho que isso seja suportado usando apenas diretivas de logrotate. Pode ser possível usar scripts inteligentes por meio das diretivas de gancho de script, como prerotate , póstrotate , firstaction e lastaction .
Atualização :
A partir do logrotate 3.8.1,
maxsize
etimeperiod
são suportados juntos, o que seria a solução ideal. Veja a resposta para esta postagem: Como girar o log com base em um intervalo, a menos que o log exceda um determinado tamanho?fonte
maxsize
etimeperiod
são suportados. Por serverfault.com/questions/474941/…A primeira resposta do @egg é que, de acordo com minhas experiências com o logrotate, não é verdade!
Se diariamente, mensalmente ... chegar primeiro e depois dessa diretiva de tamanho , diariamente, mensalmente ... será ignorado e a diretiva de tamanho será aplicada ao arquivo de log.
Da mesma forma, quando eu uso pela primeira vez a diretiva de tamanho, as diretivas diárias, semanais, mensais e anuais , a diretiva de tamanho será ignorada.
fonte
Se você adicionar Diariamente, ele será rotacionado todos os dias, mesmo que a condição Tamanho seja atendida. Se você também adicionar a condição de tamanho, poderá fazer duas rotações em um dia, dependendo de quão detalhada é a criação de log.
Se Diário for o primeiro no script, o Tamanho poderá não ser acionado.
fonte
Na verdade, minha página de manual no Red Hat parece ser bastante clara sobre as diferenças entre tamanho e tamanho mínimo:
fonte