Caching 如何有效地将iNotify与rSyslog缓存结合使用?

Caching 如何有效地将iNotify与rSyslog缓存结合使用?,caching,logging,syslog,inotify,Caching,Logging,Syslog,Inotify,默认情况下,出于性能原因,rsyslog不会立即将数据同步到日志文件。 参考第节 这是否意味着如果我在syslog文件上使用iNotify,可能会错过一个事件 到目前为止,我正在使用tail-f监视文件,它似乎正在捕获所有事件。但我怀疑系统日志缓存可能导致inotify事件丢失 我想这取决于当你收到inotify事件时你在做什么。如果您正在跟踪上一个偏移量,读取新事件的EOF并更新偏移量,您应该会很好这就是tail所做的,除了它使用计时器而不是inotify,新的可能会使用inotify。我按照

默认情况下,出于性能原因,rsyslog不会立即将数据同步到日志文件。 参考第节

这是否意味着如果我在syslog文件上使用iNotify,可能会错过一个事件


到目前为止,我正在使用tail-f监视文件,它似乎正在捕获所有事件。但我怀疑系统日志缓存可能导致inotify事件丢失

我想这取决于当你收到inotify事件时你在做什么。如果您正在跟踪上一个偏移量,读取新事件的EOF并更新偏移量,您应该会很好这就是tail所做的,除了它使用计时器而不是inotify,新的可能会使用inotify。

我按照@cpugeniusmv的建议创建了这个项目

我担心的是,如果我一开始就错过了任何活动。如果syslog正在缓存,它可能根本不会触及日志文件-如果发生这种情况,inotify将不会看到任何事件。当然,可能会有延迟,这取决于rsyslogd缓冲行的长度,但我不认为会有很长的延迟。不能保证写入日志文件的每一行都会发生inotify事件。有什么建议吗?我需要有保证的事件处理。我现在正在考虑探索syslog插件,您可以在启用$ActionFileEnableSync的情况下关闭rsyslog缓存。这就足够了吗?您可能会研究的另一件事是编写一些东西,通过某种套接字可以接受系统日志事件,这样您就不必接触磁盘。看起来rsyslog将支持转发到各种TCP、Unix和UDP套接字。我会避免UDP,因为可能会发生丢失事件。