Logstash grok 解析LogStash中的两种日志消息格式

Logstash grok 解析LogStash中的两种日志消息格式,logstash-grok,logstash-configuration,Logstash Grok,Logstash Configuration,在单个日志文件中,日志消息有两种格式。首先是: Apr 22, 2017 2:00:14 AM org.activebpel.rt.util.AeLoggerFactory info INFO: ====================================================== ActiveVOS 9.* version Full license. Licensed for All application server(s), for 8 cpus, License e

在单个日志文件中,日志消息有两种格式。首先是:

Apr 22, 2017 2:00:14 AM org.activebpel.rt.util.AeLoggerFactory info
INFO:
======================================================
ActiveVOS 9.* version Full license.
Licensed for All application server(s), for 8 cpus,
License expiration date: Never.
======================================================
第二:

Apr 22, 2017 2:00:14 AM org.activebpel.rt.AeException logWarning
WARNING: The product license does not include Socrates.
第一行是相同的,但在其他行上,可以有(用伪代码编写):
loglevel:
,或
loglevel:

我有以下配置:
查询:

%{TIMESTAMP_MW_ERR:timestamp} %{DATA:logger} %{GREEDYDATA:info}%{SPACE}%{LOGLEVEL:level}:(%{SPACE}%{GREEDYDATA:msg}|%{SPACE}=+(%{GREEDYDATA:msg}%{SPACE})*=+)
%{TIMESTAMP_MW_ERR:timestamp} %{DATA:logger} %{DATA:info}\s%{LOGLEVEL:level}:\s((=+\s%{GDS:msg}\s=+)|%{GDS:msg})
Grok模式:

AMPM (am|AM|pm|PM|Am|Pm)
TIMESTAMP_MW_ERR %{MONTH} %{MONTHDAY}, %{YEAR} %{HOUR}:%{MINUTE}:%{SECOND} %{AMPM}
AMPM (am|AM|pm|PM|Am|Pm)
TIMESTAMP_MW_ERR %{MONTH} %{MONTHDAY}, %{YEAR} %{HOUR}:%{MINUTE}:%{SECOND} %{AMPM}
GDS (.|\s)*
多行过滤器:

%{LOGLEVEL}|%{GREEDYDATA}|=+
问题是,所有消息总是用
%{SPACE}%{GREEDYDATA:msg}
标识,因此在第二种情况下,将
返回为
msg
,而从不使用
%{SPACE}=+({GREEDYDATA:msg}%{SPACE})*=+
,可能因为第一个
msg
模式包含第二个


如何解析这两种模式的
msg
查询:

%{TIMESTAMP_MW_ERR:timestamp} %{DATA:logger} %{GREEDYDATA:info}%{SPACE}%{LOGLEVEL:level}:(%{SPACE}%{GREEDYDATA:msg}|%{SPACE}=+(%{GREEDYDATA:msg}%{SPACE})*=+)
%{TIMESTAMP_MW_ERR:timestamp} %{DATA:logger} %{DATA:info}\s%{LOGLEVEL:level}:\s((=+\s%{GDS:msg}\s=+)|%{GDS:msg})
模式:

AMPM (am|AM|pm|PM|Am|Pm)
TIMESTAMP_MW_ERR %{MONTH} %{MONTHDAY}, %{YEAR} %{HOUR}:%{MINUTE}:%{SECOND} %{AMPM}
AMPM (am|AM|pm|PM|Am|Pm)
TIMESTAMP_MW_ERR %{MONTH} %{MONTHDAY}, %{YEAR} %{HOUR}:%{MINUTE}:%{SECOND} %{AMPM}
GDS (.|\s)*
多行模式:

%{LOGLEVEL}|%{GREEDYDATA}
日志被正确解析