rsyslog가 출력을 포착하지 못합니까?

rsyslog가 출력을 포착하지 못합니까?

밀어낼 수 있어 / ~로부터다음과 같이 rsyslog에 명령을 실행합니다.

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

내 시스템에서는 간단한 tail -f /var/log/messages. my 의 해당 줄 때문에 거기로 이동합니다 /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

그러나 내 사용자 정의 프로그램에서는 동일한 작업이 작동하지 않습니다.

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

myprogram 바이너리는 호출 후 즉시 반환/종료되지 않습니다. 일정 시간 동안 실행되며 가끔씩 메시지(printf 사용)를 콘솔에 인쇄합니다. 출력을 로거에 파이프하지 않으면 이런 식으로 동작합니다. 내가 틀렸다면 정정하십시오. 그러나 이 행동은 다음과 유사합니다.명령(적어도 목적지에 도달했을 때).

그렇다면 에서 myprogram의 출력이 표시되지 않는 이유는 무엇입니까 /var/log/messages? 출력이 어떻게든 버퍼링될 수 있는데 아직 로거에 도달하지 못하고 있습니까? 구성 라인 에 관한 다른 내용이 있을 수 있습니까 rsyslog.conf?

답변1

myprogram버퍼링 으로 인한 출력인 것으로 나타났습니다 . 언급된 트릭 사용이 질문에나는 빠른 해결책을 생각해 냈습니다.

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

관련 정보