免费软件Notepad++是一款功能强大的文本编辑器,其支持使用正则表达式查找,使用方法:选择菜单栏搜索 -> 选择子菜单查找,弹出查找窗口,输入查找目标,查找模式选择正则表达式。
日常查找日志的场景主要有三种:
第一, 查找带有 关键词A 或 关键词B 或 关键词C
第二, 查找带有 关键词A 且 关键词B
第三, 查找带有 关键词A但不含关键词B
根据这三场景,举例说明如何使用正则表达式去查找。
场景一:智能笔模块测出一个问题,开发人员想查看智能笔模块的日志,还有报警告或报错误的日志。
使用的查找表达式为:\[smartpen\]|log begin|LOG_WARNING|LOG_ERR
日志打印具备规范化,每行日志都会打印所属模块、日志级别。
智能笔模块为smartpen,每行日志都会带有 [smartpen],因为中括号符号[]为正则表达式预定义符合,需要用后划线符号 \ 进行转义。
竖线符号| 表示或关系,只要满足其中一个表达式就可以。
logbegin属于日志规范,程序启动后第一行日志,方便开发人员查看最后一次运行的日志。
LOG_WARNING、LOG_ERR属于日志级别警告和错误。
场景二:使用场景一的查找表达式后发现找到的日志还是很多,想进一步过滤掉带有“invalid session id,sid=xxx”的警告日志。
使用的查找表达式为:\[smartpen\]|logbegin|LOG_WARNING(?!.*sid)|LOG_ERR
与场景一使用查找表达式区别在于LOG_WARNING变成LOG_WARNING(?!.*sid)
(?!A)表示不匹配A,也就是不匹配.*sid,.*表示任何数量的任意字符,整个表达式的意思是筛选前面有LOG_WARNING,后面不要有sid的日志。
场景三:收不到智能笔的数据包,开发人员想查看下接收数据包处的日志
使用的查找表达式:\[smartpen\].*recv data,查找带有关键词[smartpen]且接收数据包入口日志关键词recv data
掌握这三种用法基本可以满足日常的日志查找,想更高级使用需要进一步学习正则表达式的语法。