grok regex解析与日志不匹配。将组指定为可选组(但不是最后一个组)时
例如: 信息:2014-10-28322:39:46.593Z-信息:尝试时出错 处理命令:PlaceMarketOrderCommand,xkkdagril。错误: 现金不足#userId=5#orderId=Y5545 模式:grok regex解析与日志不匹配。将组指定为可选组(但不是最后一个组)时,regex,logstash,logstash-grok,Regex,Logstash,Logstash Grok,例如: 信息:2014-10-28322:39:46.593Z-信息:尝试时出错 处理命令:PlaceMarketOrderCommand,xkkdagril。错误: 现金不足#userId=5#orderId=Y5545 模式: > %{LOGLEVEL:stream_level}: %{TIMESTAMP_ISO8601:timestamp} - > %{LOGLEVEL:log_level}: %{MESSAGE:message} > (#userId=%{USER_ID
> %{LOGLEVEL:stream_level}: %{TIMESTAMP_ISO8601:timestamp} -
> %{LOGLEVEL:log_level}: %{MESSAGE:message}
> (#userId=%{USER_ID:user_id})? (#orderId=%{ORDER_ID:order_id})?
使用的额外模式:
USER_ID (\d+|None)
ORDER_ID .*
ORDER_ID_HASH \s*(#orderId=%{ORDER_ID:order_id})?
USER_ID_HASH \s*(#userId=%{USER_ID:user_id})?
MESSAGE (.*?)
工作正常:
删除可选的last orderId也有效
信息:2014-10-28322:39:46.593Z-信息:尝试时出错
处理命令:PlaceMarketOrderCommand,xkkdagril。错误:
现金不足#userId=5
但如果我保留orderId并删除userId,则会得到“不匹配”
信息:2014-10-28322:39:46.593Z-信息:尝试时出错
处理命令:PlaceMarketOrderCommand,xkkdagril。错误:
现金不足#订单ID=Y5545
用户id组也以?作为可选组
与下列机构合作:
这是虫子吗?(logstash 1.4.2)正则表达式缺少什么?(更有可能……但是什么?)
我看了一下,这个语法应该是有效的。它适用于最后一个组(orderId),但不适用于之前的组
谢谢你的帮助 您正在强制一个空格位于可选的最后一个。。。您需要执行
?
:
%{LOGLEVEL:stream_level}: %{TIMESTAMP_ISO8601:timestamp} -> %{LOGLEVEL:log_level}: %{MESSAGE:message} ?(#userId=%{USER_ID:user_id})? ?(#orderId=%{ORDER_ID:order_id})?