Logging 跟踪日志的GROK模式

Logging 跟踪日志的GROK模式,logging,timestamp,logstash-grok,Logging,Timestamp,Logstash Grok,我很难想出以下日志条目的模式 [INFO ] 2020-02-07 16:11:56.148 [localhost-startStop-1] DOMUtilities - System property DocumentBuilderCacheBlockSize is not defined, using default 25 以下是我所拥有的 %{LOGLEVEL:loglevel} %{YEAR} %{MONTH} %{MONTHDAY} %{HOUR}:%{MINUTE}:%{SEC

我很难想出以下日志条目的模式

[INFO ] 2020-02-07 16:11:56.148 [localhost-startStop-1] DOMUtilities - System property DocumentBuilderCacheBlockSize is not defined, using default 25
以下是我所拥有的

  %{LOGLEVEL:loglevel} %{YEAR} %{MONTH} %{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}[%{DATA:threadName}\]\s+\%{DATA:javafile}\s[-:]\s+%{GREEDYDATA:message}

有人能告诉我我做错了什么吗?我知道问题在于日期格式,但我就是找不到答案。

您的grok模式有多个问题(顺序基于grok模式中出现的情况):

  • 日志级别在方括号内。LOGLEVEL模式不包括定义的单词以外的任何字符。此外,在loglevel后面和结束方括号之前还有一个空格
  • 时间戳的日期值(年、月、日)由连字符分隔,您根本没有指定连字符
  • 月份模式用于完整和/或缩写的月份名称,例如2月或2月,您需要使用使用数字的MONTHNUM2模式
  • 秒和线程名称之间有空格
  • 您需要在
    [%{DATA:threadName}\]
    处转义开头的方括号,因为它在正则表达式中是一个特殊字符
  • %{DATA:javafile}
请更详细地看一下及其定义

通过您提供的示例日志,我得出了以下模式:

^\[%{LOGLEVEL:LOGLEVEL}\s?+\]\s+%{YEAR}-%{MONTHNUM2}-%{MONTHDAY}\s+%{HOUR}:%{MINUTE}:%{SECOND}\s+\[%{DATA:threadName}\s+%{DATA:javafile}\s[-:]\s+%\s+{greedydydydydydata message

您可以在上验证您的模式


我希望我能帮助您。

您的grok模式有多个问题(顺序基于grok模式中出现的问题):

  • 日志级别在方括号内。LOGLEVEL模式不包括定义的单词以外的任何字符。此外,在loglevel后面和结束方括号之前还有一个空格
  • 时间戳的日期值(年、月、日)由连字符分隔,您根本没有指定连字符
  • 月份模式用于完整和/或缩写的月份名称,例如2月或2月,您需要使用使用数字的MONTHNUM2模式
  • 秒和线程名称之间有空格
  • 您需要在
    [%{DATA:threadName}\]
    处转义开头的方括号,因为它在正则表达式中是一个特殊字符
  • %{DATA:javafile}
请更详细地看一下及其定义

通过您提供的示例日志,我得出了以下模式:

^\[%{LOGLEVEL:LOGLEVEL}\s?+\]\s+%{YEAR}-%{MONTHNUM2}-%{MONTHDAY}\s+%{HOUR}:%{MINUTE}:%{SECOND}\s+\[%{DATA:threadName}\s+%{DATA:javafile}\s[-:]\s+%\s+{greedydydydydydata message

您可以在上验证您的模式


我希望我能帮助你。

这很好,并指出了我今后如何进行这项工作的要点。谢谢。它工作得很好,但在这里不起作用,这很奇怪。不过在我的logstash.conf中工作得很好,所以这才是最重要的!这是伟大的,并指出了我今后如何去做。谢谢。它工作得很好,但在这里不起作用,这很奇怪。不过在我的logstash.conf中工作得很好,所以这才是最重要的!