logstash 中的 Grok 模式格式
Grok patterns format in logstash
大部分我的模式都有效,但 Framework Error in :]
之后的部分在日志中看不到。
如何在日志中打印其余部分。
我最后尝试了模式,但仍然不起作用
%{GREEDYDATA:restofthem}
我的 grok 模式:
\[%{TIMESTAMP_ISO8601:ServerTimestamp}\|%{WORD:Log4netHostname}\|%{DATA:ProjectName}\|%{DATA:TestName}\|%{DATA:UserName}\|%{DATA:ClientIP}\|%{DATA:ClientMachineName}\|%{LOGLEVEL:LogLevel}\|%{DATA:method}\|%{DATA:message}\|%{GREEDYDATA:Exception}|%{GREEDYDATA:Exception}\]%{GREEDYDATA:restofthem}
我的日志:
[2018-06-05 13:26:57,641|host1|Appname|TTA|KKM|112.310.104.722|Host23|ERROR|Logger.Log4Net|LogError|Framework Error in :]
WebDriverTimeoutException: Timed out after 5 seconds
at DefaultWait`1.ThrowTimeoutException(String exceptionMessage, Exception lastException)
at DefaultWait`1.Until[TResult](Func`2 condition)
原因是,:]
后有一个新行,您需要匹配 \n
字符才能解析它。
有多种不同的方法,您可以使用 \n
字符匹配新行,
\[%{TIMESTAMP_ISO8601:ServerTimestamp}\|%{WORD:Log4netHostname}\|%{DATA:ProjectName}\|%{DATA:TestName}\|%{DATA:UserName}\|%{DATA:ClientIP}\|%{DATA:ClientMachineName}\|%{LOGLEVEL:LogLevel}\|%{DATA:method}\|%{DATA:message}\|%{GREEDYDATA:Exception}\n%{GREEDYDATA:2ndLine}\n%{GREEDYDATA:3rdLine}\n%{GREEDYDATA:4thLine}
这将产生,
......
"Exception": [
[
"Framework Error in :]"
]
],
"2ndLine": [
[
"WebDriverTimeoutException: Timed out after 5 seconds"
]
],
"3rdLine": [
[
" at DefaultWait`1.ThrowTimeoutException(String exceptionMessage, Exception lastException)"
]
],
"4thLine": [
[
" at DefaultWait`1.Until[TResult](Func`2 condition)"
]
]
或,
使用?m
匹配一个块中第一行之后的所有行,
\[%{TIMESTAMP_ISO8601:ServerTimestamp}\|%{WORD:Log4netHostname}\|%{DATA:ProjectName}\|%{DATA:TestName}\|%{DATA:UserName}\|%{DATA:ClientIP}\|%{DATA:ClientMachineName}\|%{LOGLEVEL:LogLevel}\|%{DATA:method}\|%{DATA:message}\|%{GREEDYDATA:Exception}(?m)%{GREEDYDATA:everythingelse}
输出,
.....
],
"Exception": [
[
"Framework Error in :]"
]
],
"everythingelse": [
[
"\nWebDriverTimeoutException: Timed out after 5 seconds\n at DefaultWait`1.ThrowTimeoutException(String exceptionMessage, Exception lastException)\n at DefaultWait`1.Until[TResult](Func`2 condition)"
]
]
}
大部分我的模式都有效,但 Framework Error in :]
之后的部分在日志中看不到。
如何在日志中打印其余部分。
我最后尝试了模式,但仍然不起作用
%{GREEDYDATA:restofthem}
我的 grok 模式:
\[%{TIMESTAMP_ISO8601:ServerTimestamp}\|%{WORD:Log4netHostname}\|%{DATA:ProjectName}\|%{DATA:TestName}\|%{DATA:UserName}\|%{DATA:ClientIP}\|%{DATA:ClientMachineName}\|%{LOGLEVEL:LogLevel}\|%{DATA:method}\|%{DATA:message}\|%{GREEDYDATA:Exception}|%{GREEDYDATA:Exception}\]%{GREEDYDATA:restofthem}
我的日志:
[2018-06-05 13:26:57,641|host1|Appname|TTA|KKM|112.310.104.722|Host23|ERROR|Logger.Log4Net|LogError|Framework Error in :]
WebDriverTimeoutException: Timed out after 5 seconds
at DefaultWait`1.ThrowTimeoutException(String exceptionMessage, Exception lastException)
at DefaultWait`1.Until[TResult](Func`2 condition)
原因是,:]
后有一个新行,您需要匹配 \n
字符才能解析它。
有多种不同的方法,您可以使用 \n
字符匹配新行,
\[%{TIMESTAMP_ISO8601:ServerTimestamp}\|%{WORD:Log4netHostname}\|%{DATA:ProjectName}\|%{DATA:TestName}\|%{DATA:UserName}\|%{DATA:ClientIP}\|%{DATA:ClientMachineName}\|%{LOGLEVEL:LogLevel}\|%{DATA:method}\|%{DATA:message}\|%{GREEDYDATA:Exception}\n%{GREEDYDATA:2ndLine}\n%{GREEDYDATA:3rdLine}\n%{GREEDYDATA:4thLine}
这将产生,
......
"Exception": [
[
"Framework Error in :]"
]
],
"2ndLine": [
[
"WebDriverTimeoutException: Timed out after 5 seconds"
]
],
"3rdLine": [
[
" at DefaultWait`1.ThrowTimeoutException(String exceptionMessage, Exception lastException)"
]
],
"4thLine": [
[
" at DefaultWait`1.Until[TResult](Func`2 condition)"
]
]
或,
使用?m
匹配一个块中第一行之后的所有行,
\[%{TIMESTAMP_ISO8601:ServerTimestamp}\|%{WORD:Log4netHostname}\|%{DATA:ProjectName}\|%{DATA:TestName}\|%{DATA:UserName}\|%{DATA:ClientIP}\|%{DATA:ClientMachineName}\|%{LOGLEVEL:LogLevel}\|%{DATA:method}\|%{DATA:message}\|%{GREEDYDATA:Exception}(?m)%{GREEDYDATA:everythingelse}
输出,
.....
],
"Exception": [
[
"Framework Error in :]"
]
],
"everythingelse": [
[
"\nWebDriverTimeoutException: Timed out after 5 seconds\n at DefaultWait`1.ThrowTimeoutException(String exceptionMessage, Exception lastException)\n at DefaultWait`1.Until[TResult](Func`2 condition)"
]
]
}