logstash在日志旋转发生后不读取当前文件

logstash在日志旋转发生后不读取当前文件,logstash,logstash-configuration,Logstash,Logstash Configuration,我从日志文件中读取输入并写入kafka。即使在日志旋转之后,inode也不会改变。日志旋转后,仍然读取旋转的日志文件(xx.log.2020 xx xx xx),而不是指向主文件(xx.log) 下面是输入文件的配置文件设置。 我是否需要添加任何其他配置来忽略读取旧文件 input { file { path => "C:/Users/xx.log" } } 这和我的问题是一样的。默认情况下,Logstash可以很好地处理文件旋转 您需要做的就是确保使

我从日志文件中读取输入并写入kafka。即使在日志旋转之后,inode也不会改变。日志旋转后,仍然读取旋转的日志文件(xx.log.2020 xx xx xx),而不是指向主文件(xx.log)

下面是输入文件的配置文件设置。 我是否需要添加任何其他配置来忽略读取旧文件

input {
  file {
    path => "C:/Users/xx.log"
  }
}
这和我的问题是一样的。默认情况下,Logstash可以很好地处理文件旋转

您需要做的就是确保使用一个全局模式(例如,
…log*
)来标识所有日志文件,Logstash将跟踪它们:

input {
  file {
    path => "C:/Users/xx.log*"
  }
}

它在旋转后是否读取
xx.log
?@karanshah它读取旧日志文件(xx.log.2020 xx xx xx),最后在几个小时(12小时)后开始读取当前文件(xx.log)。添加sincedb\u clean\u after会有帮助吗?是的,我认为设置
sincedb\u clean\u after
ignore\u older
会有帮助。还可以将路径过滤器更改为类似于
xx.log*
的内容,以便logstash可以跟踪所有旧文件和新文件,并确定要读取的文件。查看有关日志旋转和文件节拍()的已知问题。我认为它们也适用于logstash。我试着给出log*。那没用。它在发生旋转时创建了新的inode,但仍然从旧的旋转文件中读取数据并将数据发送给kafka。我看到并确认,通过在调试模式下运行logstash 7.9.3,当输入文件路径为xx.log*时,以及当日志旋转发生如xx.log.1/xx.log.2等时。。。它起作用了。它正确读取指向xx.log的文件。对于日期为xx.log.2020-MM-DD等的展期。。。将输入文件路径设置为xx.log*不起作用。当发生旋转时,它仍然会在5分钟内读取旧文件并转储它,然后指向xx.log并读取它。所以重读还是会发生。