[英]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.