繁体   English   中英

Grok解析方括号内的数据

[英]Grok parse data inside square brackets

用grok解析这种日志的最佳方法是什么?

2019-03-15 14:42:38,910 INFO  [SID:6cd1c3cc-7fb0-4a06-8d4d-e125382568ca] [CID:60c24e3e-c8f9-43e4-bedf-59e861bfabf9] [http-bio-8080-exec-3] [TariffRuleServiceImpl.java:569] no approach by ShouldAddApproachToFixedPrice checkbox : false

我想得到这样的结果:

{
  "date": [
    "19-03-15"
  ],
  "time": [
    "14:42:38,910"
  ],
  "level": [
    "INFO"
  ],
 "SID": [
    "6cd1c3cc-7fb0-4a06-8d4d-e125382568ca"
  ],
 "CID": [
    "60c24e3e-c8f9-43e4-bedf-59e861bfabf9"
  ],
 "thread": [
    "http-bio-8080-exec-3"
  ],
 "class": [
    "TariffRuleServiceImpl.java:569"
  ],
 "message": [
    "no approach by ShouldAddApproachToFixedPrice checkbox : false"
  ]
}

但是我被困在这里: %{DATE:date} %{TIME:time} %{WORD:level} ...? 如何在[...]内获取数据? 非常感谢

Grok模式的主要思想应该是用反斜杠跳过方括号,例如\\[ 跳过它们后,您可以使用常规模式来匹配您的元素。 像这样的东西会随你的便:

%{DATE:date} %{TIME:time} %{WORD:level}  \[SID:%{DATA:SID}\] \[CID:%{DATA:CID}\] \[%{DATA:thread}] \[%{DATA:class}] %{GREEDYDATA:message}

另外,请注意,在level[SID之间有两个空格,这可能会使您的模式不匹配,具体取决于您的构造。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM