如何将精确单词的一部分移动到Logstash中的另一个字段



让我们想象一下我的日志文件如下:

My custom exception ST: java.lang.RuntimeException: Text of this dummy err.

我的最终目标是将ST:之后的所有内容都放在新的字段ST上,并删除ST:

我正在尝试使用该模式,但它不起作用。

filter {
  grok {
    match => { "message" => "(?<newField>(?<=ST)(?s)(.*$))" }
}

Grok基于Oniguruma Regex库。要使.与Oniguruma Regex匹配任何字符,您需要通过(?m)内联修饰符,而不是(?s)(如PCRE和其他一些正则发动机(。

通过将(?<=ST)阳性lookahead放置在命名捕获组中,您需要ST立即出现在当前位置之前,但是您将有ST和一个冒号,然后是一个空间。只需将ST:移出命名组

"(?m)ST: (?<newField>.*)"
 ^^^^^^^^

ST:和空间将得到匹配和消耗,newField组将保存其余的字符串。

您可以使用类似的特定正则等级:

^My custom exception ST: %{GREEDYDATA:ST}

或更富裕的一个:

%{GREEDYDATA} bSTb: %{GREEDYDATA:ST}

始终尝试使用特定的正直。

相关内容

  • 没有找到相关文章