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