我正在尝试使用Apache NiFi
读取grok
中的日志数据,但无法获取所需的输出。
这是我的示例数据:
[2019-07-16 22:20:16] local.INFO: news.index {"mobile":"959404576540","message":Mozilla/5.0 (Linux; Android 8.0.0; ATU-L42 Build/HUAWEIATU-L42; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36 a/2.7.0}
我尝试使用以下表达式,但对我没有用。
%{SYSLOG5424SD}%{JAVACLASS}: %{JAVACLASS} {%{QS}:%{QS},%{QS}:%{QS}}
任何人都请帮助我,我如何从上述数据中提取2019-07-16 22:20:16
,959404576540
和Mozilla/5.0 (Linux; Android 8.0.0; ATU-L42 Build/HUAWEIATU-L42; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36 a/2.7.0
。
修改:
@Emma答案有效,但如果我的数据包含任何空值,则无效。例如:
[2019-07-16 22:20:16] local.INFO: news.index {"mobile":"8765453673","message":null}
谢谢。
答案 0 :(得分:1)
此表达式
\[([^]]+?)\](.*?)"mobile":"\s*(\d+)\s*"\s*,\s*"message"\s*:\s*([^}]*?)\s*\}
例如,可能是提取这些数据的开始。
如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。