O daemontools multilog perde as informações de tempo da linha de registro. Como corrigi-lo?

2

Estou usando daemontools para monitorar um processo e seu log de saída. Estou usando o multilog para gravar os registros em disco.

O script de execução do log é:

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
cd /usr/local/script_dir
exec multilog t s16777215 n50 '!tai64nlocal' '!/bin/gzip' /var/log/script_log

O processo que está sendo monitorado também grava a saída para stderr. Portanto, no script de execução do processo, há as seguintes linhas para redirecionar o stderr para o stdout:

exec 2>&1
exec ./my_process

No entanto, enquanto atalho o arquivo de log, vejo centenas de linhas de saída entrando em rajadas (o processo monitorado grava a saída a cada poucos segundos) e o registro de data e hora nas linhas de log difere em níveis sub-microssegundos. Eu sei da natureza do processo que a diferença de tempo entre as linhas de log não é tão pequena. Claramente, o multilog está armazenando em buffer a saída e, em seguida, adicionando o registro de data e hora quando está pronto para gravar no arquivo. Eu gostaria que os timestamps refletissem mais de perto a hora em que a linha foi gerada. Como isso pode ser corrigido?

    
por donatello 15.03.2013 / 14:47

1 resposta

5

O script que está sendo monitorado era um script Python. Para tornar todos os fluxos padrão sem buffer, descobri que é possível passar a opção -u para o interpretador. Isso resolveu o problema no meu caso.

    
por 23.03.2013 / 01:09