为什么 syslog.h 在我的 C 程序中跳过日志消息



我有一个由libev事件循环组成的C程序。对于其中一个观察程序,有一个内部循环,产生 100+ 条日志消息(每条 ~200 个字符长(。由于某种原因,只有三分之一的消息进入日志文件。程序不退出。我可以通过数据判断观察程序成功完成了内部循环,它不会静默失败。

有趣的是,如果我在每个系统日志调用之后插入一个printf语句,则所有日志消息都可以很好地进入日志文件。

如何修复这种奇怪的行为?当然,我希望所有系统日志调用都能在日志文件中产生等效的条目。

我不能随意给出示例代码,但所有调用都是完全普通的系统日志调用。在程序的其他地方,它们工作正常。

如果重要的话,我正在OSX 10.7.5的VirtualBox VM中使用Debian 7(gcc 4.7.2-5(,方法是在OSX终端中使用ssh。

所以这被证明是rsyslog的消息速率限制。按照此处更改默认值使问题消失。

最新更新