我们正在使用 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"

  • 我们正在使用以下正则表达式:
    \[(.*)\] \| (.*) - (.*) - (.*)
    感谢您的帮助。

    最佳答案

    你应该改用这个正则表达式:
    \[(.*)\] \| (.*?) - (.*?) - (.*)
    我只是在 ? 之后为“发射器”和“线程”字段/组添加了一个 .* 字符。
    这是一个常见的正则表达式问题(并非特定于 LogMX):

  • .* 被称为贪婪量词:这意味着它将尝试匹配最大数量的字符
  • .*? 被称为不情愿量词:这意味着它将尝试匹配最少数量的字符

  • 您可以在 JDK API(搜索“贪婪”)或 LogMX docs 中阅读有关此内容的更多信息。

    PS:如果您不想使用正则表达式来解析 LogMX 中的日志,您可以改用它的“Log4j/Logback 模式解析器”:模式 [%p] | %c - %t - %m 将符合您的需要,并且默认情况下对于所有字段/组都是不情愿的默认。

    关于regex - LogMX 正则表达式解析器的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24373720/

    10-11 02:59