1

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"
        ]
      ]
    }
4

1 に答える 1

2

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})
于 2014-06-17T10:27:10.333 に答える