请求生成SiteScope正则表达式:匹配指定HttpStatus与ErrorCode的日志
如何在SiteScope中编写匹配特定日志条件的正则表达式?
针对你需要在SiteScope中触发同时包含"HttpStatus" : 400和"ErrorCode" : "40000"的日志告警需求,我来帮你梳理合适的正则表达式方案:
推荐的正则表达式
考虑到日志中字段的顺序可能不固定,最稳妥的写法是用正向预查确保两个条件同时满足,不管它们在日志里的位置:
针对英文双引号的日志:
/(?=.*"HttpStatus"\s*:\s*400)(?=.*"ErrorCode"\s*:\s*"40000")/
针对你示例中中文双引号的日志:
你提供的示例日志用的是中文引号(“和”),如果实际日志也是这种格式,正则要调整为:
/(?=.*“HttpStatus”\s*:\s*400)(?=.*“ErrorCode”\s*:\s*“40000”)/
正则逻辑解释
(?=.*X):正向预查语法,作用是确认字符串中存在X内容,但不会消耗匹配字符,因此可以同时叠加多个预查条件\s*:匹配任意数量的空白字符(空格、制表符等),兼容日志中键值对之间可能存在的空格差异- 整个正则的逻辑是:只要日志中同时存在
HttpStatus:400和ErrorCode:"40000"这两个键值对,不管先后顺序,都会匹配成功
你之前尝试的问题分析
第一个写法
/“HtHttpStatus” : 400, “ErrorCode” : “40000”- 存在拼写错误(
HtHttpStatus多了一个t) - 要求两个字段必须连续且顺序固定,一旦日志中两个字段中间插入了其他内容,就无法匹配,灵活性太差
- 存在拼写错误(
第二个写法
/[“HttpStatus” : 400], [“ErrorCode” : “40000” ]a- 错误使用了方括号
[]:方括号在正则中是字符集,表示匹配括号内的任意单个字符,而不是匹配整个字符串,所以这个写法完全不符合你的需求
- 错误使用了方括号
SiteScope使用注意事项
- 有些版本的SiteScope不需要正则分隔符
/,直接填写正则内容即可,可以根据实际界面要求调整 - 测试时可以用你提供的示例日志验证正则是否生效,确保引号类型(中文/英文)和实际日志一致
内容的提问来源于stack exchange,提问作者sandeep saradhi
相关产品推荐
相关产品推荐

