我有一个tomcat访问日志,如下所示
122.164.121.231 - - [23/Nov/2015:07:19:54 -0500] "GET /configs/config/loggedinuser@gmail.com HTTP/1.1" 200 1135
我已经编写了一个可以正常运行的logstash模式并选择了数据
%{IP:clientip} \- \- \[%{NOTSPACE:date} \-%{INT}\] \"%{WORD:action} /%{WORD}/%{WORD}/%{NOTSPACE:login} %{WORD:protocol}/%{NUMBER:protocolNum}\" %{NUMBER:status} %{NUMBER}
但这种模式只有在API网址不变时才有效,即
/configs/config/loggedinuser@gmail.com
因为它处于模式
/%{WORD}/%{WORD}/%{NOTSPACE:login}
在我的情况下,我想让整个API独立于模式,例如/configs/config/loggedinuser@gmail.com或
我怎么能这样做?
编辑:
发现使用%{GREEDYDATA:api}我能够获得完整的API字符串
答案 0 :(得分:0)
您是否正在寻找多个级别的" /"?然后你可以做
%{IP:clientip} \- \- \[%{NOTSPACE:date} \-%{INT}\] \"%{WORD:action} /%{GREEDYDATA:api} %{WORD:protocol}/%{NUMBER:protocolNum}\" %{NUMBER:status} %{NUMBER}
还有其他什么吗?
对于logstash http://grokdebug.herokuapp.com/
,Grok过滤器插件有一个非常酷的调试器此外,我们正在开发一个API调试工具,这可能会有所帮助,但由于我是首席执行官,因此需要完全披露。 https://www.moesif.com/features