我是Logtash的新手。我想使用 grok 将日志文件中的每一行解析为json对象。我的日志如下:
1570519737247 I access {"date":"2019-10-08T09:28:57.247","rootTitle":"title1","rootModel":"model1","dcTitle":"[1a]"}
1570519737247 I access {"date":"2019-10-08T09:28:57.247","rootTitle":"title2","rootModel":"model2","dcTitle":"[1b]"}
您可以看到每一行都以文本开头,然后有一个有效的json对象。
我想为看起来像这样的每一行构造一个对象:
{
"accesing": "1570519737247",
"message": {
"date":"2019-10-08T09:28:57.247",
"rootTitle":"title1",
"rootModel":"model1",
"dcTitle":"[1a]"
}
}
因此,我想在开始时取这个数字,并将其分配给“访问”键,我不需要“我访问”字,然后将json对象传递给“消息”。
我在grok调试器%{WORD:accesing}%{GREEDYDATA:message}中尝试了这种模式,但是那当然不是我所需要的。拜托,有人可以帮忙吗?
答案 0 :(得分:0)
使用此:
%{WORD:accesing} I access %{GREEDYDATA:message}
输入:
1570519737247 I access {"date":"2019-10-08T09:28:57.247","rootTitle":"title1","rootModel":"model1","dcTitle":"[1a]"}
输出:
{
"accesing": [
[
"1570519737247"
]
],
"message": [
[
"{"date":"2019-10-08T09:28:57.247","rootTitle":"title1","rootModel":"model1","dcTitle":"[1a]"}"
]
]
}