2013-10-12 48 views
0

我有一個C程序,它由一個libev事件循環組成。對於其中一個觀察者來說,有一個內部循環導致100多條日誌消息(每個約200個字符長)。出於某種原因,只有三分之一的消息將其記錄到日誌文件中。該程序不會退出。我可以通過數據告訴觀察者成功完成內部循環,它不會默默失敗。爲什麼syslog.h跳過C程序中的日誌消息?

作爲一個有趣的轉折,如果我在每個syslog調用之後插入一條printf語句,那麼所有日誌消息都會將其記錄到日誌文件中。

這種奇怪的行爲如何解決?當然,我希望所有的系統日誌調用都會導致日誌文件中的等價條目。

我不是在放棄示例代碼,但所有的調用都是完全的香草系統日誌調用。在程序的其他地方,他們工作得很好。

如果有問題,我在OSX 10.7.5的VirtualBox VM中通過OSX終端中的ssh使用Debian 7(gcc 4.7.2-5)。

回答

1

所以原來這是rsyslog的消息速率限制。根據here更改默認值使問題消失。