2013-10-12 4 views
0

libev 이벤트 루프로 구성된 C 프로그램이 있습니다. 관찰자 중 하나에게는 내부 루프가있어 100 개가 넘는 로그 메시지 (각각 ~ 200 자 길이)가 발생합니다. 어떤 이유로 인해 메시지의 1/3만이 로그 파일에 기록됩니다. 프로그램이 종료되지 않습니다. 내 관찰자가 내부 루프를 성공적으로 완료했음을 데이터로 알 수 있습니다. 자동으로 실패하지 않습니다.C 프로그램에서 syslog.h가 로그 메시지를 건너 뛰는 이유는 무엇입니까?

흥미로운 트위스트로, 각 syslog 호출 직후에 printf 문을 삽입하면 모든 로그 메시지가 로그 파일에 잘 표시됩니다.

이 이상한 동작을 어떻게 해결할 수 있습니까? 물론 모든 syslog 호출이 로그 파일에서 동일한 항목을 가져 오기를 기대합니다.

예제 코드는 자유롭지 않지만 모든 호출은 완전히 바닐라 syslog 호출입니다. 이 프로그램의 다른 곳에서도 잘 작동합니다.

중요한 점은 OSX 터미널의 ssh를 통해 OSX 10.7.5의 VirtualBox VM에서 데비안 7 (gcc 4.7.2-5)을 사용하고 있습니다.

답변

1

메시지 속도 제한이 rsyslog 인 것으로 나타났습니다. 기본값을 here으로 변경하면 문제가 해결됩니다.