Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
grok regex解析与日志不匹配。将组指定为可选组(但不是最后一个组)时_Regex_Logstash_Logstash Grok - Fatal编程技术网

grok regex解析与日志不匹配。将组指定为可选组(但不是最后一个组)时

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

例如:

信息: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: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})?