我有一个由libev
事件循环组成的C程序。对于其中一个观察程序,有一个内部循环,产生 100+ 条日志消息(每条 ~200 个字符长(。由于某种原因,只有三分之一的消息进入日志文件。程序不退出。我可以通过数据判断观察程序成功完成了内部循环,它不会静默失败。
有趣的是,如果我在每个系统日志调用之后插入一个printf
语句,则所有日志消息都可以很好地进入日志文件。
如何修复这种奇怪的行为?当然,我希望所有系统日志调用都能在日志文件中产生等效的条目。
我不能随意给出示例代码,但所有调用都是完全普通的系统日志调用。在程序的其他地方,它们工作正常。
如果重要的话,我正在OSX 10.7.5的VirtualBox VM中使用Debian 7(gcc 4.7.2-5(,方法是在OSX终端中使用ssh。
所以这被证明是rsyslog
的消息速率限制。按照此处更改默认值使问题消失。