1. 概述

官方文档关于多方匹配英文比较绕,这里翻译成中文,总结后便于记忆,点击此处查看官方原文

1.1 翻译及记忆方式

multiline.pattern: '^test #匹配以“test”开始的行
multiline.negate: true | false
multiline.match: after | before

  • negate false: 双重否定为肯定–匹配pattern;true:否定,不匹配pattern;
  • negate 中匹配与否作 主语,理解这点就好记忆了;
  • match 意为negate中在未匹配到的之前或者之后;或者未匹配到的在匹配到的之前或者之后

如下图所示:

negatematchResult
falseafter匹配到的(主语negate)在未匹配到的的后面
falsebefore匹配到的(negate)在未匹配到的前面
trueafter未匹配到的(negate)在匹配到的后面
truebefore未匹配到的在匹配到的前
1.2 案例

一般来说,Java日志报错不规则的行在规则的行下面,需要把下面的合并到最上面规则的一行上,match为after,如下面:

[beat-logstash-some-name-832-2015.11.28] IndexNotFoundException[no such index]
    at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.resolve(IndexNameExpressionResolver.java:566)
    at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:133)
    at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:77)
    at org.elasticsearch.action.admin.indices.delete.TransportDeleteIndexAction.checkBlock(TransportDeleteIndexAction.java:75)

针对上面的日志:

1.2.1 匹配行首规则的日志:

multiline.pattern: ‘^\[’
multiline.negate: true #未匹配到的在下面
multiline.match: after

1.2.2 匹配下面几行不规则的日志:

multiline.pattern: ‘^[[:space:]]’
multiline.negate: false #匹配到的在下面
multiline.match: after

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐