【问题标题】:grok debugger regex usagegrok 调试器正则表达式的使用
【发布时间】:2014-08-07 00:23:38
【问题描述】:

我正在测试grok debugger,但我无法解决我的问题。

示例文本:

2014-06-17 04:37:30,317 c.e.A.MyActivity INFO main MyActivity.java 53 com.example.ApLogback.MyActivity$1 onClick logger track

我应该如何构造一个 grok 正则表达式/模式字符串,以便它像以下部分一样拆分前面的示例文本:

{
    timestamp:2014-06-17 04:37:30,317
    logger:c.e.A.MyActivity
    level:info
    caller_thread:main
    caller_method:MyActivity.java
    caller_line:53
    caller_class:com.example.ApLogback.MyActivity$1
    caller_method: onClick
    msg: caller track
}

我的当前正则表达式是:

 (?<timestamp>[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}) (?<logger>.*) 

但它只将日志字符串的开头分成几部分。我当前的 grok 字符串的示例结果是:

    {
      "timestamp": [
        [
          "2014-06-17 04:37:30,317"
        ]
      ],
      "logger": [
        [
          "c.e.A.MyActivity INFO main MyActivity.java 53 com.example.ApLogback.MyActivity$1 onClick logger"
        ]
      ]
    }

【问题讨论】:

    标签: elasticsearch logstash grok


    【解决方案1】:

    Grok 带有许多已定义的模式,可以满足您的大部分需求,请访问:Grok Debugger/patterns

    至于您的问题的具体答案,这是一个快速的肮脏示例,可以满足您的需求。这只是一个示例,说明如何使用已经定义的 grok 模式来构建自己的模式。

    (?<timestamp>[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}) (?:%{JAVACLASS:logger}) (?:%{LOGLEVEL:level}) (?:%{WORD:caller_thread}) (?:%{JAVACLASS:caller_file}) (?:%{NONNEGINT:caller_line}) (?:%{JAVACLASS:caller_class}) (?:%{WORD:caller_method}) (?:%{GREEDYDATA:msg})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多