网络信患工程
2021.01
赵书慧
(辽宁石化职业技术学院,辽宁锦州,121001)
摘要:用Android Studio 编辑应用程序过程中,Logcat 的日志过滤器经常会使用到。日志过滤器是支持正则表达式的,
有了这个特性,就可以构建出更加丰富的过滤条件。正则表达式有着强大的查询功能,通过对正则表达式特殊字符的分
深圳防疫站
析,将正则表达式运用于日志过滤器,从成百上千条日志中过滤出用户有用的信息,对快速调试程序有着重要的意义。 关键词:正则表达式;日志;过滤器 Application of regular expression in Android log filter
Zhao Shuhui
(Liaoning Petrochemical Vocational and Technical College, Jinzhou Liaoning, 121001)Abstrac t :In the process of editing an application with Android Studio, Logcat J s log filter is often used. The log "Iter supports regular expressions. With this feature, you can build richer filter conditions. Regular expressions have powerful query functions. Through the analysis of special characters in regular expressions, regular expressions are applied to log filters to filter out useful information for users from hundreds of logs, which is important for fast debugging of programs Meaning. Keywords : regular expression; log; filter
o 引言
Android Studio 应用程序调试过程中,打印出来的日志
里边有很多不明不白的信息,影响我们查看日志的效率。能
正确的定位错误和到自己需要的日志信息是一件很幸福 的事,要想办法把不需要的日志给屏蔽掉,Logcat Filter
能够完美胜任这个功能。在日志过滤器中运用正则表达式可
以保留自己想要的日志信息或过滤掉无用的日志信息,使用
转义字符或特殊字符序列来描述具有特定含义的过滤条件。
1 Android studio 中的正则表达式伞齿轮
正则表达式(通常缩写成'regex ”)是一种可用于字符
串模式匹配和字符串替换的强有力的工具。如果我们要查 的字符串是具体而完整的,则直接用这个字符串进行查
即可。但一般情况下,我们对要查的内容只有一个模糊的 印象,模糊查则要使用正则表达式。在Android 中“*”号 并不会匹配任意字符,”号才匹配任意字符一次,Android
studio 的正则表达式和shell 中的正则表达式是一致的,常
用重点符号有:
(1) .*表示匹配任意字符>=0次,(2) .?匹配任意字符0
次或1次,
(3) . +匹配任意字符1
次或多次,
(4) 用$标识匹配的结
束,用-表示匹配的开始,
(5)用丨表示匹配关系的或,当不同的log 没有相同
的过滤条件,又想一次性过滤出来,丨可以多次使用。
2 Android 日志过滤器的使用方法
Logcat 是学习Android 过程中的一个重要的调试工具, 用来获取系统日志信息的。日志工具类Log 提供了 5个方法
供用户打印日志,按照级别从低到高排列如下:
Log. v 0对应级别verbose,用来记录详细信息,打印所
有的意义最小的日志信息。
Log. d()对应级别debu&用来记录调试信息。
Log.iO 对应级别inf 。,记录通告信息的,用于打印一些
比较重要的信息,程序中常用的是调试和通告这两种方法, 可以帮助用户分析行为的数据。
Log. w()对应级别warn,记录警告信息的,提示程序在
这个地方可能会有潜在的风险。
Log.eO 对应级别error,记录错误信息的,通常代表程
序出现了严重问题,必须尽快修复。
可以在Logcat 中的“日志级别”下拉列表中进行级别选 择,默认级别是最小的级别信息Verbose,如图1所示。级别日志级别
关键字过滤日志过滤器
图 1 Logcat
基金项目:2019年辽宁石化职业技术学院院级科研项目“基于Android 的学生信息管理系统的探究(LSHYY1909)。
申耳测说
结构补强ELECTRONIC
TEST
2021.01
网络信患工程
高于所选类型的信息也会在Logcat 中显示出来,级别低于所
选类型的信息则不会被显示,所以只是用日志级别过滤的信
息是有限的。
上面的5个方法每个方法会有不同的重载,但通常情况
下有两个参数,第一个参数是日志标签TAG(可以是一个字符
串,也可以定义一个常量用来标记),主要用于对日志信息进 行过滤;第二个参数是实际的信息内容msg,这两个参数都是 字符串类型的数据。程序运行到我们设置的“日志点”时,在
Logcat 中查相应位置的日志信息时,就可以根据'‘日志点”
显示的信息是否存在,或与我们预期在方法中设置的信息的
内容是否一致来判断程序运行到该位置之前是否存在错误,
迅速到错误的*'出事地点”。
运行Android 程序的时候,即使事先选择了某个日志信 息的级别,产生的日志信息还是很多。这时就要用到Logcat 提供的"过滤”功能了,单击图1右上角“日志过滤器”下拉
列表框,选择 Edit Filter Configuration 打开 Creat New
Logcat Filter 对话框(如图2)添加、删除、编辑日志过滤器。
可以根据日志信息的标签(Tag)、信息的内容(Message), H
志包名、产生日志的进程编号(PID)或者信息等级(Level),
对显示的日志内容进行过滤。单击对话框左上角的“+”号,添
加一个名为data 的过滤器,过滤条件设置为AAA,打印出来
的日志就只有标签为'AAA ”的有限几条了。根据自己应用程
序的包名在Logcat 里边自己创建一个过滤器,这样不管系统
是否给你创建过滤器,都能打印出和自己应用相关的日志。
图2创建新的日志过滤器对话框
3日志过滤器中使用正则表达式
打印的Log 有两部分,一是Tag,二是Message c 由于
Message 一般是不固定的,所以还是愉快地用Tag 作例子来 过滤无关的Log 吧。假设我们要保留的T°g 是“AAA ” ,那么 在 Create New Logcat Filter 对话框中,Log Tag 栏输入 “AAA"即可。如果是保留多个呢?假设除了标签"AAA ”,还要
保留标,这个时候就要用到正则表达式了,只需要
在图2中勾选Log Tag 栏位后面的Regex 复选框,过滤器的
Log Tag 位置更改为'AAAlBBB ”即可,这是使用正则表达式中 最简单的“或”关系。也可以输入“ (A | B) {3,} ”,其中{ 3, }表示
匹配前面字符的次数最少是3次。
(1) 只保留特定的log
若想知道每条日志的Tag 是什么,观察一下打印出来的
日志:
2020-08-22 10:02:44.171 26112-26112/com. example, logtest I/AAA: onStart
中国经济为什么行
对应格式如下:
date time PID-TID/package priority/tag: message 所以只要看到日志,就能根据位置知道该日志的Tag 和 Message …这里,PID 代表进程标识符;TID 则为线程标识符,
如果仅有一个线程,两者可以相同;package 是包名;tag 是 日志标签;message 是日志信息内容。过滤出指定Tag 的日
志信息,其正则表达式可以写成:”(?:tagl|tag2|tag3)
(2) 忽略特定的log
在Log Tag 中输入正则表达式:”(?!.* (AAA)). *$
用”表示匹配的开始,用$标识匹配的结束,!表示否
定,其中AAA 是要忽略掉的Tag,表示除了标签AAA 之外的日
志信息全部要显示。例如:忽略指定tag 的日志信息可以写 成:"(?!tagl |tag21tag3)
(3) 除了可以在日志过滤器中使用正则表达式对特定的 log 进行过滤或忽略,也可以在图1中的"关键字
过滤”文本
搜索框中直接输入字符串或正则表达式,但关键字过滤时不
区分 Tag 和 Messageo
4结束语
程序开发过程中出现错误是不可避免的,录入程序时开
发环境即时可以检测语法错误,并及时提示我们错误的位置 以及修改的方法,但是逻辑错误的定位和分析是一件非常困
难的事情。当程序打印出成百上千行日志的时候,就会迫切
的需要日志过滤器了。Android 应用程序中会包含很多的类
名,通常会为每个类名设置一个常量TAG,根据TAG 用日志过
滤器筛选出自己想要看到的日志内容。如果要打印多个类的
日志内容就要使用正则表达式,在日志过滤器中使用正则表
财务信息化
天然精油
达式可以让用户通过使用特定字符构建查询模式,其所提供
的强大的模式匹配功能大大简化了日志筛选工作。当然,也
只有通过不断地实际使用的过程,反复运用和精通正则表达
式的所有特殊字符,才能真正体会到运用正则表达式在日志 过滤中的优越性,为程序的调试提供强有力的支持。
参考文献
[1]郭霖.第一行代码Android(第2版)[M].人民邮电出版社,
2016 年 12 月.
⑵李旻,陈和平.正则表达式在数据库查询中的应用[J].计
算机工程与设计,2006⑹.
(上接第96页)
⑶ 郭云.提升电气自动化控制设备可靠性探讨[J],电子世 ⑷ 杨明.电气自动化控制设备的可靠性分析[J],电子测
界,2019(18):11-13.
试,2019(16):47-49.
ELECTRONIC
TEST