Melhores maneiras de manipular os logs do sistema

1

Eu quero manipular os logs. Até agora, para mim, a melhor maneira de limpar os logs do sistema é:

truncate -s 0 /var/log/*log

Estou procurando as melhores maneiras de:

1 - Faça o acima periodicamente. Eu já tentei logrotate , mas não consegui configurá-lo para fazer exatamente o que eu quero, ou seja, manter apenas o arquivo de log original e truncá-lo periodicamente sem excluí-lo.

- Atualizado:

De acordo com northern-bradley answer aqui a solução parece estar usando a opção lastaction/endscript no arquivo de configuração logrotate. Então, funciona perfeitamente usando essas configurações:

/var/log/*log{
       rotate 0
       size 0 
       hourly
       nocreate
       maxage 0
       missingok
       nocompress
       ifempty
       copytruncate
       lastaction
             rm -rf /var/log/*log.1
       endscript
}

A opção copytruncate copia os logs para novos arquivos de log ignorando rotate 0 e nocreate e, em seguida, trunca os logs originais. Depois que todos os arquivos de log tiverem sido rotacionados, a seção rm into lastaction/endscript excluirá todos os novos arquivos de log criados por copytruncate . No final, temos apenas os arquivos originais limpos.

2 - Limpar as últimas entradas 'n'

3 - Bloquear / Desbloquear novas entradas, algo como congelar / descongelar. Para isso, estou pensando em usar ln -s /dev/null /var/log/*log , mas não sei se posso restaurá-lo sem precisar de nenhum script. Ou talvez uma técnica de estado de backup / restauração possa ajudar.

Existe alguma outra maneira que possa me ajudar a fazer todos os itens acima (2 e 3)?

    
por ioaniatr 23.03.2017 / 14:39

1 resposta

2

O Logrotate é projetado especificamente para lidar com essas tarefas e funciona muito bem. Eu sugiro que você use isso.

Agora, vamos olhar (e se necessário - corrigir) seu arquivo logrotate, usando as páginas de manual finas fornecidas pelos mocinhos do Ubuntu (link ).

Sua versão:

# File: /etc/logrotate.d/.test
/var/log/*log{
   size 0 
   hourly
   nocreate
   copytruncate
   rotate 0
}

Eu sugiro que você use o abaixo:

# File: /etc/logrotate.d/.test
/var/log/*.log{
# the rotate option sets how many times the log files are rotated before being removed. Setting it to 0 means - delete right away (you'll only have the original)
   rotate 0
# the size option sets what size should a file reach before being rotated - I'm setting it to 10MB, but you can change it as it pleases you
   size 10M
# The size option will prevail this option. The daemon will run hourly, but won't rotate the log file until it reaches 10 MB
   hourly
# this option fits your requirement not to create new log files
   nocreate
# delete rotated log files older than 0 days
   maxage 0
# truncate the original file rather creating new one
   nocopytruncate
}
    
por 13dimitar 23.03.2017 / 15:44