Проблема с анализатором регулярных выражений LogMX

Мы используем LogMX Viewer для просмотра журналов наших приложений, используя анализатор регулярных выражений.

Каждый раз, когда сообщение журнала содержит символ "-", 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"

Мы используем следующее регулярное выражение:

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

Спасибо за помощь.

2 ответа

Решение

Вы должны использовать это регулярное выражение вместо:

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

Я просто добавил ? символ после .* для полей / групп "Emitter" и "Thread". Это распространенная проблема регулярных выражений (не относится только к LogMX):

  • .* называется жадным квантификатором: это означает, что он будет пытаться сопоставить максимальное количество символов

  • .*? называется неохотным квантификатором: это означает, что он будет пытаться соответствовать минимальному количеству символов

Вы можете прочитать больше об этом в JDK API (поиск "жадный") или в документации по LogMX.

PS: если вы не хотите использовать регулярные выражения для анализа ваших журналов в LogMX, вы можете вместо этого использовать его "Log4j/Logback pattern Parser": шаблон [%p] | %c - %t - %m будет соответствовать вашим потребностям, и по умолчанию неохотно для всех полей / групп.

Это потому, что ваше регулярное выражение является жадным. Попробуйте добавить ? в ваши группы, чтобы избежать регулярных выражений жадности.

Посмотрите на это:

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

Визуализация регулярных выражений

Debuggex Demo

Здесь вы можете увидеть правильные значения, хранящиеся в группах:

введите описание изображения здесь

Другие вопросы по тегам