Como atomicamente mudar / girar o arquivo de log a cada minuto?

5

Eu tenho um aplicativo legado que gera uma grande quantidade de mensagens de registros. Gostaria de poder girar o arquivo a cada minuto (ou mais), mas sem perder / truncar nenhuma mensagem. O aplicativo não é capaz de alterar o arquivo por si só, então eu preciso fazê-lo externamente. Navegando na net, eu vi muita sugestão para usar cp seguido por cat /dev/null , mas como meu aplicativo está gerando quase um fluxo contínuo de mensagens, algumas mensagens são perdidas durante o processo.

Você tem alguma ideia?

    
por Cerber 28.05.2013 / 22:41

2 respostas

5

Transforme o arquivo de log em FIFO ( man mkfifo ) e coloque um processo no lado da leitura que separa sua entrada em arquivos de tamanho limitado.

mkfifo /path/to/logfifo.app_xy
split ... </path/to/logfifo.app_xy &
/bad/app
    
por 28.05.2013 / 23:54
1

Talvez a ferramenta logrotate possa lidar com isso.

    
por 28.05.2013 / 23:04

Tags