请教logstash的多行日志问题,最后一行的日志总是不能获取

tanghaijie595 2015-05-09 08:32:29
input{
file{
path => "c:/data.txt"
type => "tangtype"
}
}
filter{
multiline {
pattern => "^[^2014]"
what => "previous"
}
}

output{
stdout{
codec => rubydebug
}
}
这是我的配置文件,所有不是2014开头的日志,都合并到上一行。
比如说以下是日志文件中的内容:
2014 aaa
2014 bbb
2014 ccc
可是日志文件里的最后一行日志("2014 ccc"),始终不能获取。
我明白原理,是因为最后一行日志在没有下一行更新的日志到来之前,无法判断("2014 ccc")这一行是否已经结束。
有懂的人能够帮帮我吗?采用什么方法能解决呢?谢谢!
...全文
1994 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小航海士 2017-02-20
  • 打赏
  • 举报
回复
匹配行尾,xml文件: <log4j:event logger="TestResult.STRATEGY" timestamp="1487125526458" level="INFO" thread="5444"> <log4j:message><![CDATA[BEGIN STRATEGY]]></log4j:message> <log4j:MDC> <log4j:data name="MsgType" value="0"/> <log4j:data name="StrategyName" value="01"/> </log4j:MDC> </log4j:event> 配置: multiline { pattern => "^\</log4j:event>" negate => true what => "next" }
DDYsunshine 2017-01-04
  • 打赏
  • 举报
回复
楼主这个问题解决了吗
xxxxx_o 2016-08-11
  • 打赏
  • 举报
回复
楼主 你最后一行能获取吗?我也遇到这个问题 ,动态的我也不能获取
我是大秦 2016-07-09
  • 打赏
  • 举报
回复
引用 2 楼 haveysun 的回复:
你这种写法本身是没有错的,只是c:/data.txt里面的数据时静态的,logstash当然没法识别文件中的数据什么时候结束,现在你可以这样测试: 1.删掉data.txt里面的数据 2.把2014 aaa 2014 bbb 2014 ccc 这三行数据写到test.txt中 3.cat test.txt >> data.txt 4.观察结果,三行都出来了 5.注意是在linux环境下测试,不是windows 6.good luck to you
为什么静态的不可以呢?
haveysun 2015-05-19
  • 打赏
  • 举报
回复
你这种写法本身是没有错的,只是c:/data.txt里面的数据时静态的,logstash当然没法识别文件中的数据什么时候结束,现在你可以这样测试: 1.删掉data.txt里面的数据 2.把2014 aaa 2014 bbb 2014 ccc 这三行数据写到test.txt中 3.cat test.txt >> data.txt 4.观察结果,三行都出来了 5.注意是在linux环境下测试,不是windows 6.good luck to you
tanghaijie595 2015-05-11
  • 打赏
  • 举报
回复
有人能帮忙吗?

10,608

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧