rsyslog não está capturando saída?

rsyslog não está capturando saída?

eu posso empurrar / decomando para rsyslog assim:

ping www.superuser.com 2>&1 | logger -p user.info

No meu sistema, a saída "ao vivo" pode ser assistida com um simples arquivo tail -f /var/log/messages. Ele vai para lá por causa da linha correspondente no meu /etc/rsyslog.config:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                -/var/log/messages

No entanto, a mesma coisa não funciona no meu programa personalizado:

myprogram 2>&1 | logger -p user.info

O binário myprogram não retorna/sai imediatamente após a chamada - ele será executado por algum tempo - e de vez em quando imprime mensagens (usando printf) no console. Ele se comporta dessa maneira se eu não canalizar sua saída para o logger. Corrija-me se eu estiver errado, mas esse comportamento é semelhante aocomando (pelo menos quando o destino for alcançado).

Por que então não estou vendo a saída do meu programa /var/log/messages? A saída poderia ser armazenada em buffer de alguma forma e simplesmente ainda não está sendo registrada? Poderia ser algo mais sobre a rsyslog.conflinha de configuração?

Responder1

Acontece que foi a saída do myprogrambuffer. Usando truques mencionadosnesta questãoEu encontrei uma solução rápida:

script -q -c "myprogram" | logger -p user.info

informação relacionada