Utilitário de registro do arquivo de tipo de buffer rotativo

2

Eu estou tentando depurar um servidor que gera muitos logs no stdout / stderr. Preciso redirecionar apenas as últimas N linhas para um arquivo. Algo como um recurso de buffer rotativo em tcpdump ' -C & -W flags. Seria bom se eu pudesse ver o log enquanto o servidor ainda estava rodando e lançando os logs (eu poderia cp em outro arquivo para visualizá-lo). Existe um utilitário que faz isso? Da minha pequena compreensão da ferramenta logrotate , ela deve ser executada repetidamente. Eu não acho que isso se encaixa na minha necessidade. O que eu gostaria é:

serverd -d | $TOOL -n 100 srv.log

... onde a qualquer momento srv.log contém as últimas 100 linhas geradas a partir de serverd .

    
por Manish 05.08.2011 / 16:27

3 respostas

1

Você pode buscar somente as últimas N linhas de qualquer arquivo ou fluxo de entrada usando tail .

command | tail -n 100 > file

No entanto, parece que você quer um fluxo rotativo das últimas 100 linhas sempre em um arquivo de log. Isso não é facilmente possível. Você pode truncar regularmente o arquivo de log excluindo linhas ou usar um sistema como logrotate para extrair dados antigos, mas não há uma maneira fácil de manter um arquivo de log do tipo FIFO de 100 linhas.

    
por 05.08.2011 / 16:31
0

Tenho certeza de que o pôster original encontrou uma solução até agora. Aqui está outro para os outros que podem ler este tópico ...

A restrição restringe o tamanho da saída de um programa e preserva os últimos 200MB de saída com o seguinte comando:

$ run_program | curtail -s 200M myprogram.log

Referências

NOTA: eu sou o mantenedor do software vinculado a esta resposta ....

    
por 06.11.2018 / 16:06
0

O Apache tem um programa chamado rotatelogs ,

Qualquer tamanho que você goste de log crescer, escolha metade do tamanho e não defina nenhum arquivo de log como 2, por exemplo

<yourlogGenerator>|rotatelogs -n 2 logfile 5M

Irá criar dois arquivos de log de 5M e alternar entre eles.

Aqui está a descrição completa de rotatelogs .

Você pode adicionar -L linkname , então você pode tail -f linkname

    
por 06.11.2018 / 17:50