Regex LogMX正则表达式解析器出现问题
我们正在使用LogMX日志查看器来监控我们的应用程序日志,使用正则表达式解析器 每次日志消息包含“-”字符时,LogMX都不会像预期的那样解析日志事件 例如,以下日志事件:Regex LogMX正则表达式解析器出现问题,regex,logparser,log-viewer,logmx,Regex,Logparser,Log Viewer,Logmx,我们正在使用LogMX日志查看器来监控我们的应用程序日志,使用正则表达式解析器 每次日志消息包含“-”字符时,LogMX都不会像预期的那样解析日志事件 例如,以下日志事件: [ERROR]| com.nsoft.gmonitor.Controller-文件加载器-加载文件“C:\gmonitor\prefs.properties-Copy”时出错 解析为: 发射器:com.nsoft.gmonitor.Controller-文件加载器 线程:加载文件“C:\GMonitor\prefs.pro
[ERROR]| com.nsoft.gmonitor.Controller-文件加载器-加载文件“C:\gmonitor\prefs.properties-Copy”时出错
解析为:
- 发射器:
com.nsoft.gmonitor.Controller-文件加载器
- 线程:
加载文件“C:\GMonitor\prefs.properties”时出错
- 消息:
-复制“
- 发射器:
com.nsoft.gmonitor.Controller
- 线程:
文件加载程序
- 消息:
加载文件“C:\GMonitor\prefs.properties-Copy”时出错“
\[(.*)\]\\\\\;(.*)-(.*)-(.*)-(.*)
谢谢你的帮助。那是因为你的正则表达式很贪婪。尝试向组中添加
?
,以避免正则表达式的贪婪
看看这个:
\[.*\] .? (.*?) - (.*?) - (.*)
在这里,您可以看到存储在组中的正确值:
您应该改用此regexp:
\[(.*)\]\\\\(.*)-(.*)-(.*)-(.*)-(.*)
我刚刚在“发射器”和“线程”字段/组的*
后面添加了一个?
字符。
这是一个常见的正则表达式问题(不特定于LogMX):
被称为贪婪量词:这意味着它将尝试匹配最大字符数*
被称为不情愿的量词:这意味着它将尝试匹配最小数量的字符*?
[%p]|%c-%t-%m
将符合您的需要,默认情况下不愿意用于所有字段/组