【问题标题】:How to move part of the string after exact word to another field in logstash?如何将确切单词后的部分字符串移动到logstash中的另一个字段?
【发布时间】:2019-05-04 08:09:38
【问题描述】:

假设我有如下日志文件:

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

我的最终目标是将 ST: 之后的所有内容放入新字段 ST 调用并删除 ST:

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

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

【问题讨论】:

  • Как, помогло моё решение?

标签: logstash elastic-stack logstash-grok


【解决方案1】:

Grok 是based on Oniguruma 正则表达式库。要使. 匹配任何带有Oniguruma regex 的字符,您需要传递(?m) 内联修饰符,而不是(?s)(如在PCRE 和其他一些正则表达式引擎中)。

通过在命名的捕获组中放置(?&lt;=ST) 正向前瞻,您需要ST 出现在当前位置之前,但您有ST 和一个冒号,然后是一个空格。 只需将ST: 移出指定组

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

ST: 和空间将被匹配和消耗,newField 组将保留字符串的其余部分。

【讨论】:

    【解决方案2】:

    您可以像这样使用特定的正则表达式:

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

    或者更通用的:

    %{GREEDYDATA} \bST\b: %{GREEDYDATA:ST}
    

    始终尝试使用特定的正则表达式。

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2017-04-12
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多