3

正規表現パーサーを使用して、LogMX ログ ビューアーを使用してアプリケーション ログを監視しています。

ログ メッセージに「-」文字が含まれるたびに、LogMX はログ イベントを期待どおりに解析しません。

たとえば、次のログ イベント:

[ERROR] | com.nsoft.gmonitor.Controller - File Loader - Error while loading file "C:\GMonitor\prefs.properties - Copy"

次のように解析されます。

  • エミッター: com.nsoft.gmonitor.Controller - File Loader

  • スレッド: Error while loading file "C:\GMonitor\prefs.properties

  • メッセージ:- Copy"

それ以外の:

  • エミッター:com.nsoft.gmonitor.Controller

  • スレッド:File Loader

  • メッセージ:Error while loading file "C:\GMonitor\prefs.properties- Copy"

次の正規表現を使用しています。

\[(.*)\] \| (.*) - (.*) - (.*)

ご協力ありがとうございました。

4

2 に答える 2

4

代わりに、次の正規表現を使用する必要があります。

\[(.*)\] \| (.*?) - (.*?) - (.*)

「エミッタ」および「スレッド」フィールド/グループの?後に文字を追加しました。.*これは一般的な正規表現の問題です (LogMX に固有のものではありません)。

  • .*貪欲量指定子と呼ばれます: これは、文字の最大数に一致しようとすることを意味します

  • .*?消極的な量指定子と呼ばれます: これは、文字の最小数に一致しようとすることを意味します

詳細については、JDK API (「greedy」を検索) またはLogMX docsを参照してください。

PS : LogMX でログを解析するために正規表現を使用したくない場合は、代わりに「Log4j/Logback パターン パーサー」を使用できます。パターン[%p] | %c - %t - %mはニーズに一致し、デフォルトではすべてのフィールド/グループに対して消極的です。デフォルト。

于 2014-06-25T21:07:54.590 に答える
2

これは、正規表現が貪欲であるためです。?正規表現の貪欲さを避けるために、グループに追加してみてください。

これを見てください:

\[.*\] .? (.*?) - (.*?) - (.*)

正規表現の視覚化

Debuggex デモ

ここでは、グループに保存されている正しい値を確認できます。

ここに画像の説明を入力

于 2014-06-23T22:18:49.563 に答える