如何在p6spy中通过正则表达式排除指定SQL日志?
解决SQL日志排除配置不生效的问题
原配置的问题点
- 错误使用参数:
excludeconnectfilters用于过滤数据库连接相关操作,而非SQL语句过滤,正确参数应为excludesqlexpr - 正则规则与需求不匹配:
- 多余了
AS total限定,需求是排除所有select count(*) from trade语句,不管是否包含别名 - insert规则写的是
insert into xxx,与实际需要排除的insert into task不匹配
- 多余了
- 未兼容SQL大小写:SQL语句可能存在大小写混用(如
SELECT/select),原正则未做适配
正确配置示例
dateformat=yyyy-MM-dd HH:mm:ss.SSS # 已确认生效 filter=true # 排除指定SQL语句,(?i)开启不区分大小写匹配,多规则用|分隔 excludesqlexpr=(?i).*SELECT\s+COUNT\s*\(\s*\*\s*\)\s*FROM\s+trade.*|(?i).*INSERT\s+INTO\s+task.*
配置说明
excludesqlexpr:专门用于SQL语句过滤的配置项,符合当前需求场景(?i):让正则不区分大小写,适配各种SQL写法- 第一个规则:匹配所有包含
select count(*) from trade的SQL,兼容空格、大小写差异 - 第二个规则:匹配所有包含
insert into task的SQL,兼容空格、大小写差异 - 多规则用
|分隔,表示“或”逻辑
注意事项
- 修改配置后需重启应用,确保新配置生效
- 可单独测试每个正则规则,验证是否能准确匹配目标SQL语句
内容的提问来源于stack exchange,提问作者Plan Action
相关产品推荐
相关产品推荐

