syslog-ng 尾文件缺少最后一行

Posted

技术标签:

【中文标题】syslog-ng 尾文件缺少最后一行【英文标题】:syslog-ng tail file missing last line 【发布时间】:2021-02-09 12:12:06 【问题描述】:

我在许多日志上使用通配符文件源,其中一些运行缓慢,这意味着我注意到日志文件的最后一行从未及时发送到目的地。有时在本地写入日志之间会有 50 分钟的间隔,在这段时间内,日志文件的最后一行永远不会发送到目的地。

目标是elasticsearch-http,我尝试在目标块中将batch-timeout()设置为2秒或较低的值,并将follow-freq(1)添加到源配置中无济于事。

这是否与最后一行没有换行符的事实有关,因此 syslog-ng 在写入新行之前不会读取它?如果是这样,如何将最后一行刷新到目的地?

非常感谢

【问题讨论】:

【参考方案1】:

文件的最后一行必须以换行符结束才能被视为完整。

如果您无法控制 syslog-ng 处理的日志格式,您可以尝试使用multi-line-mode()multi-line-timeout() 作为解决方法,在一定超时后刷新最后一个不完整的行。

【讨论】:

以上是关于syslog-ng 尾文件缺少最后一行的主要内容,如果未能解决你的问题,请参考以下文章

syslog-ng读取文件权限被拒绝

syslog-ng 本地读写失败

Syslog-ng、日志文件和fifo文件

使用 TLS 和 p12 文件时出现 Syslog-NG 错误

syslog-ng 学习心得与配置说明

syslog-ng 到 redis 问题,能够写入文件但无法写入 redis