0

例:

情報: 2014-10-28T22:39:46.593Z - 情報: コマンドの処理中にエラーが発生しました: PlaceMarketOrderCommand、xkkdAAG​​RIl。エラー: 現金が不足しています #userId=5 #orderId=Y5545

パターン:

> %{LOGLEVEL:stream_level}: %{TIMESTAMP_ISO8601:timestamp} -
> %{LOGLEVEL:log_level}: %{MESSAGE:message}
> (#userId=%{USER_ID:user_id})? (#orderId=%{ORDER_ID:order_id})?

使用される追加のパターン:

USER_ID (\d+|None)
ORDER_ID .*
ORDER_ID_HASH \s*(#orderId=%{ORDER_ID:order_id})?
USER_ID_HASH \s*(#userId=%{USER_ID:user_id})?
MESSAGE (.*?)

正常に動作します: オプションの last orderId を削除しても動作します

情報: 2014-10-28T22:39:46.593Z - 情報: コマンドの処理中にエラーが発生しました: PlaceMarketOrderCommand、xkkdAAG​​RIl。エラー: 現金が不足しています #userId=5

しかし、orderId を保持して userId を削除すると、「一致しません」というメッセージが表示されます

情報: 2014-10-28T22:39:46.593Z - 情報: コマンドの処理中にエラーが発生しました: PlaceMarketOrderCommand、xkkdAAG​​RIl。エラー: 現金が不足しています #orderId=Y5545

また、user_id グループは ? で終わっています。オプションのグループとして..

herokuでgrok デバッガーを使用する場合:

これはバグですか?(logstash 1.4.2) 正規表現で何か不足していますか? (より可能性が高い..しかし、何?)

grokが使用している正規表現ライブラリを調べたところ、この構文が機能するはずです。最後のグループ (orderId) では機能しますが、前のグループでは機能しません..

助けてくれてありがとう!

4

1 に答える 1