我正在尝试从具有明确定义的格式的自定义应用程序中获取日志数据。我正在尝试使用 grok 过滤器挑选出某些数据,但我没有任何运气。这是一个示例日志:
- System.Data.SqlClient.SqlException (0x80131904): Arithmetic overflow error converting IDENTITY to data type int.
Arithmetic overflow occurred.
我想做的是从字符串中提取出 SqlException 。这是我正在使用的 grok:
grok{
match =>
{
"message" =>
[
"(?m)%{DATE:TIMESTAMP_DATE}%{SPACE}%{TIME:TIMESTAMP_TIME}%{SPACE}%{WORD:LOG_LEVEL}%{SPACE}(?<THREAD>[^\s]+)%{SPACE}(?<HOST>[^\s]+)%{SPACE}%{GREEDYDATA:MESSAGE}",
"(?<EXCEPTION>[.*]+)"
]
}
}
我尝试了几种不同的方法,但我想我并不完全理解文档。我期望发生的是我在第一组中提取的所有字段都将包括第二组的结果。换句话说:
TIMESTAMP_DATE,TIMESTAMP_TIME,LOG_LEVEL,THREAD,HOST,MESSAGE,EXCEPTION
我完美地获得了其他领域,这只是我缺少的额外匹配。任何帮助,将不胜感激。谢谢