Use o Logrotate para truncar os arquivos de log após cada entrada ou limpar as últimas entradas 'n'

1

Eu criei um arquivo de configuração logrotate:

touch /etc/logrotate.d/.test

com as confusões:

/home/myUser/test*.log{
    size 0
    hourly
    rotate 0    
    nocreate
    nocompress
    missingok
    nocopytruncate
    ifempty
}

Eu quero poder limpar os arquivos depois de cada entrada (arquivo de log de bloco) ou em alguns arquivos de log para limpar as últimas entradas 'n'. Na verdade, eu quero continuar fazendo:

truncate -s 0 /home/myUser/test*.log

Como está, nocopytruncate delete é o arquivo de log. Se eu colocar copytruncate , cria um segundo log de cada log "teste * .log.1", ignorando rotate 0 .  Se eu executo os comandos abaixo, não faço nada, ignorando size 0 .

echo "hello" >> ~/test1.log
cat ~/test1.log
  //output: hello

Parece que não funciona usando size . Para que isso funcione, preciso executar:

logrotate -f .test

Estou fazendo algo errado?

É possível fazer isso usando logrotate e manter o arquivo de configuração escondido de alguma forma (como está)?

Quanto à segunda parte para apagar as últimas 'n' enries, não tenho ideia de como posso fazer isso com o logrotate.

    
por ioaniatr 22.03.2017 / 22:40

1 resposta

0

Em vez de usar logrotate.

Eu apenas faria algo assim:

ln -s /dev/null /home/myUser/test.log

O que fará com que todos os dados de registro sejam enviados para o dispositivo nulo.

Mas o registro é útil e normalmente você não deve simplesmente descartá-lo. A maioria dos aplicativos permite que você modifique o quanto eles registram e onde eles logam. Eu usaria esses métodos antes de jogá-los fora.

    
por 22.03.2017 / 23:20