【问题标题】:Fluentd Not parsing the last line of the logFluentd 不解析日志的最后一行
【发布时间】:2019-05-21 05:32:00
【问题描述】:

我目前正在设置 efk 堆栈来解析我的 java 日志 (log4j)。我能够解析除日志最后一行之外的所有日志。所以例如。

2019-05-17 07:19:35,708 WARN log-line-1

2019-05-17 07:19:35,708 WARN log-line-2

所以log-line-1 被解析,但不是log-line-2。否则我可以解析所有内容。

我已经测试了我的正则表达式 (https://rubular.com/),它运行良好。

以下是fluentd的配置:

format multiline

format_firstline /\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2},\d{3}/

format1 /(?<logtime>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2},\d{3})[\s](?<LEVEL>[A-Z]+)(?<message>(?=([\w\W\s]*?\d{4}-\d{2}-\d{2}[\s]*\d{2}:\d{2}:\d{2}\,\d{3}))([\w\W\s]*?)(?=(\d{4}-\d{2}-\d{2}[\s]*\d{2}:\d{2}:\d{2}\,\d{3}))|((.|\s)*))/

@type tail

time_key logtime

【问题讨论】:

  • @Laurenz Albe:- 感谢您编辑问题!!

标签: java logging fluentd


【解决方案1】:

我有同样的错误,并且 我不知道这是否可以帮助你,但它对我有用。

td-agent.conf:

    ...
    @type tail
    format multiline
    format_firstline  /^\d{4}-\d{1,2}-\d{1,2}.\d{1,2}:\d{1,2}:\d{1,2},\d{3} (?<type>[A-Z]+) (?<message>.*\n.*)/
    format1 /^\d{4}-\d{1,2}-\d{1,2}.\d{1,2}:\d{1,2}:\d{1,2},\d{3} (?<type>[A-Z]+) (?<message>.*\n.*)/
    ...

我认为(?&lt;message&gt;.*\n.*) 可能会有所帮助,因为它包含多个/n,包括 之后的所有行。

试试here

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2018-06-19
    • 2019-10-20
    相关资源
    最近更新 更多