logstash-grok - 可选字段的 GROK 模式
问题描述
我有一个日志字符串,如:
2018-08-02 12:02:25.904 [http-nio-8080-exec-1] WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver.handleTypeMismatch - Failed to bind request element
在上面的字符串[http-nio-8080-exec-1]
中是一个可选字段,它可以出现在一些日志语句中。
我创建了一个 grok 模式,比如网上的一些参考资料:
%{TIMESTAMP_ISO8601:timestamp} (\[%{DATA:thread}\])? %{LOGLEVEL:level}%{SPACE}%{JAVACLASS:class}\.%{DATA:method} - %{GREEDYDATA:loggedString}
如果我删除线程名称字符串,它似乎不起作用。
解决方案
您需要使线程名称后面的空格字符可选:(\[%{DATA:thread}\] )?
输入:
2018-08-02 12:02:25.904 WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver.handleTypeMismatch - Failed to bind request element
图案:
%{TIMESTAMP_ISO8601:timestamp} (\[%{DATA:thread}\] )?%{LOGLEVEL:level}%{SPACE}%{JAVACLASS:class}\.%{DATA:method} - %{GREEDYDATA:loggedString}
输出:
{
"loggedString": "Failed to bind request element",
"method": "handleTypeMismatch",
"level": "WARN",
"class": "o.s.w.s.m.s.DefaultHandlerExceptionResolver",
"timestamp": "2018-08-02 12:02:25.904"
}
推荐阅读
- amazon-web-services - S3 子域端点访问 URL
- c++ - SOAP 1.2 错误 SOAP-ENV:Sender[无子代码]
- gulp - 如何将 globbed gulp.src 文件移动到嵌套的 gulp.dest 文件夹中
- web-bluetooth - web-bluetooth 获取服务漫长的等待
- amazon-web-services - 如何通过 lambda 删除 s3 中的文件?
- python - 标签和破折号组件并排
- javascript - 我想知道如何在 d3.js 圆环图中创建等组
- javascript - 如何在相机视图的固定位置在 A-Frame 中绘制 2D UI?
- css - 过渡不适用于 React useState hook 和 styled-component
- python - ML 预测不止一步