例:
情報: 2014-10-28T22:39:46.593Z - 情報: コマンドの処理中にエラーが発生しました: PlaceMarketOrderCommand、xkkdAAGRIl。エラー: 現金が不足しています #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、xkkdAAGRIl。エラー: 現金が不足しています #userId=5
しかし、orderId を保持して userId を削除すると、「一致しません」というメッセージが表示されます
情報: 2014-10-28T22:39:46.593Z - 情報: コマンドの処理中にエラーが発生しました: PlaceMarketOrderCommand、xkkdAAGRIl。エラー: 現金が不足しています #orderId=Y5545
また、user_id グループは ? で終わっています。オプションのグループとして..
herokuでgrok デバッガーを使用する場合:
これはバグですか?(logstash 1.4.2) 正規表現で何か不足していますか? (より可能性が高い..しかし、何?)
grokが使用している正規表現ライブラリを調べたところ、この構文が機能するはずです。最後のグループ (orderId) では機能しますが、前のグループでは機能しません..
助けてくれてありがとう!