Logstash 5.2.0中的多行编解码器不工作
Logstash中的以下编解码器配置用于从不检测新行:Logstash 5.2.0中的多行编解码器不工作,logstash,Logstash,Logstash中的以下编解码器配置用于从不检测新行: input { file { path => "c:\temp\log5.log" type => "log4net" codec => multiline { pattern => "^hello" negate => true what => previous }
input {
file {
path => "c:\temp\log5.log"
type => "log4net"
codec => multiline {
pattern => "^hello"
negate => true
what => previous
}
}
}
请确认我对上述配置的解释是否正确:
如果一行不是以文本“hello”开头,则合并该行
与前一行。相反,如果一行以文本开头
“hello”处理为新日志事件的开始
在上面的配置中,Logstash从未在我的日志文件中检测到新行,即使我有几行以“hello”开头。你知道问题出在哪里吗
编辑:
input {
file {
path => "//22.149.166.241/GatewayUnsecure/Log_2016.03.22_22.log"
start_position => "beginning"
type => "log4net"
codec => multiline {
pattern => "^%{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY}"
negate => true
what => previous
}
}
}
日志样本:
2016-03-22 22:00:07,768 [3] INFO AbCap.Cerberus [(null)] - Cerberus 'Cerberus Service Hosting - Unsecure', ('Local'), version 1.0.0.0, host 'WinService' 2016-03-22 22:00:07,783 [7] INFO AbCap.Cerberus [(null)] - Starting 'Cerberus Service Hosting - Unsecure' on JHBDSM020000273 in Local. 2016-03-22 22:00:07,783 [7] DEBUG AbCap.Cerberus [(null)] - Starting: WcfHostWorker 2016-03-22 22:00:07,783 [7] INFO AbCap.Cerberus [(null)] - is opening
您的解释是正确的,您可以添加一些示例日志,因为它们出现在输入文件中吗?这可能会让我们发现你的问题的原因!实际日志存储输入配置(下一条注释中的文件示例):输入{file{path=>“//22.149.166.241/GatewayUnsecure/Log_2016.03.22_22.Log“start_position=>“start”type=>“log4net”编解码器=>多行{pattern=>“^%{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY}”否定=>true what=>previous}}}}}2016-03-22 22:00:07768[3]INFO AbCap.Cerberus[(null)]-Cerberus'Cerberus服务托管-不安全',('Local'),版本1.0.0.0,主机'WinService'2016-03-22:00:07783[7]INFO AbCap.Cerberus[(null)]-在本地启动JHBDSM0200000273上的“Cerberus服务托管-不安全”。2016-03-22 22:00:07783[7]调试AbCap.Cerberus[(null)]-开始:WcfHostWorker 2016-03-22 22:00:07783[7]信息AbCap.Cerberus[(null)]-正在打开。嘿,里卡多,我把你的配置/日志示例编辑成这个问题,但我不确定文件中的日志格式,你能更新吗?再次感谢威尔!当我弄明白发生了什么时,我脸上有点不高兴——我的日志文件是用UCS-2 Big-Endian编码的,这自然会导致我在代码和grok过滤器中的模式失败,因为多行编解码器使用的默认编码是UTF-8!因此,我将编码改为
UCS-2BE
,所有的工作都如预期的那样。谢谢@WillBarnwell的帮助!您的解释是正确的,您可以添加一些示例日志,因为它们出现在输入文件中吗?这可能会让我们发现你的问题的原因!实际日志存储输入配置(下一条注释中的文件示例):输入{file{path=>“//22.149.166.241/GatewayUnsecure/Log_2016.03.22_22.Log“start_position=>“start”type=>“log4net”编解码器=>多行{pattern=>“^%{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY}”否定=>true what=>previous}}}}}2016-03-22 22:00:07768[3]INFO AbCap.Cerberus[(null)]-Cerberus'Cerberus服务托管-不安全',('Local'),版本1.0.0.0,主机'WinService'2016-03-22:00:07783[7]INFO AbCap.Cerberus[(null)]-在本地启动JHBDSM0200000273上的“Cerberus服务托管-不安全”。2016-03-22 22:00:07783[7]调试AbCap.Cerberus[(null)]-开始:WcfHostWorker 2016-03-22 22:00:07783[7]信息AbCap.Cerberus[(null)]-正在打开。嘿,里卡多,我把你的配置/日志示例编辑成这个问题,但我不确定文件中的日志格式,你能更新吗?再次感谢威尔!当我弄明白发生了什么时,我脸上有点不高兴——我的日志文件是用UCS-2 Big-Endian编码的,这自然会导致我在代码和grok过滤器中的模式失败,因为多行编解码器使用的默认编码是UTF-8!因此,我将编码改为UCS-2BE
,所有的工作都如预期的那样。谢谢@WillBarnwell的帮助!