我正在使用Zabbix监控系统。我需要监控Windows服务器上的日志文件中的错误消息。第一行只显示ERR,接下来的2行显示错误的时间戳和详细信息。我需要将所有3行放入Zabbix。Zabbix使用perl regex完成此操作。
下面是我一直在玩的正则表达式。它可以在日志中找到ERR,也可以复制额外的行,但不是两者都有。我想我需要的是一个if then do语句,但不知道如何编写。
\Q[ERR]\E(?:\r\n?|\n)(.*?)(?:\r\n?|\n)(.*?){2}(.+)
\Q[ERR]\E -finds ERR in the log file
(?:\r\n?|\n)(.*?)(?:\r\n?|\n)(.*?){2}(.+)
- 当我把它们放在一起时,复制接下来的2行,它不起作用
日志文件:2023年3月15日18:14:31.149 -04:00 [错误]异常时间:2023年3月15日下午6:14:31异常消息:找不到文件“\XXXXX01\Files\51372\Working.xml”。
请帮帮忙。我已经用头撞墙一个星期了。
1条答案
按热度按时间wz1wpwve1#
如果要匹配所有3行而不匹配捕获组,其中第一行包含
[ERR]
Regex demo
或匹配以下所有包含Exception的行
Regex demo