我建议您使用grokdebug 在线工具,该工具对于此类用例非常有用。
这是第一个与数据行的必须部分匹配的 grok 表达式:
\[%{TIMESTAMP_ISO8601:timestamp}\]\[%{LOGLEVEL:level} \]\[%{GREEDYDATA:class}\] %{GREEDYDATA:action} \{:setting=>"%{GREEDYDATA:setting}", :path=>"%{PATH:path}"\}
此表达式是您的用例的起点。这个 grok 表达式的结果是这样的:
{
"timestamp": [
[
"2021-01-27T11:51:18,838"
]
],
"YEAR": [
[
"2021"
]
],
"MONTHNUM": [
[
"01"
]
],
"MONTHDAY": [
[
"27"
]
],
"HOUR": [
[
"11",
null
]
],
"MINUTE": [
[
"51",
null
]
],
"SECOND": [
[
"18,838"
]
],
"ISO8601_TIMEZONE": [
[
null
]
],
"level": [
[
"INFO"
]
],
"class": [
[
"logstash.setting.writabledirectory"
]
],
"action": [
[
"Creating directory"
]
],
"setting": [
[
"path.dead_letter_queue"
]
],
"path": [
[
"C:\\Pippo\\logstash-7.6.1\\data\\dead_letter_queue"
]
],
"UNIXPATH": [
[
null
]
],
"WINPATH": [
[
"C:\\Pippo\\logstash-7.6.1\\data\\dead_letter_queue"
]
]
}