用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} ...?
如何在[...]
内部获取数据?非常感谢
答案 0 :(得分:0)
Grok模式的主要思想应该是跳过带有反斜杠的方括号,例如\[
。跳过它们后,您可以使用常规模式来匹配您的元素。像这样的东西会随心所欲地工作:
%{DATE:date} %{TIME:time} %{WORD:level} \[SID:%{DATA:SID}\] \[CID:%{DATA:CID}\] \[%{DATA:thread}] \[%{DATA:class}] %{GREEDYDATA:message}
还要认识到level
和[SID
之间有两个空格,这可能会使您的模式不匹配,具体取决于您的构造。