android 过滤格式,Android Studio实现保留或过滤特定Log

调试过程中,经常会出现很多log,将有用的log刷掉,甚至有时候,log信息还会丢失,看不到想要的log,无疑大大降低了效率。这些问题都是可以解决的,Android studio的Logcat Filter能够完美胜任,而你需要了解如何使用,基本使用请参照官网开发指南,下面主要介绍如何保留或过滤特定的log。

Log丢失

在某些情况下,如fragment页面crash了,但所在的activity重建,这样就把crash信息丢失了(不知道是不是studio的bug...)。

解决:为该project添加Logcat Filter;

在Studio的Android Monitor栏位中,选择Edit Filter Configuration,如下图

11e56991ff28

在打开的Create New Logcat Filter面板中添加一个filter,Package Name设置为当前project的包名,如下图

11e56991ff28

再次运行即可看到"丢失"的log

只保留特定的log

我们知道打印的Log有两部分,一是Tag,一是message,那么我们就可以根据Tag或message来过滤无关的log,由于message一般是不固定的,所以我们还是愉快地用Tag来实现这个吧。

假设我们要保留的的tag是“AAA”,那么在Create New Logcat Filter面板中,Log Tag栏位输入“AAA"即可。

如果是保留多个呢?假设现在除了”AAA“,还要保留"BBB",这个时候就要用上正则表达式了:

勾选Log Tag栏位后面的Regex选项,将"AAA"更改为"AAA|BBB"即可。

注意:由于运行过程中不能同时选择多个logcat filter联合过滤日志,所以只能在一个filter中通过正则表达式设置条件完成过滤。

到这里可能有同学就要问了,自己编写的代码,我能知道日志的Tag是什么,但源码或第三库打印出来的日志的Tag是什么呀?观察一下打印出来的日志:

09-04 16:35:58.550 6345-6345/com.example.logfilter D/AAA: Tag a

格式如下:

date time PID-TID/package priority/tag: message

所以只要看到日志,就能根据位置知道该日志的Tag和message。这里,PID 代表进程标识符,TID 则为线程标识符;如果仅有一个线程,两者可以相同。

过滤特定的log

过滤掉特定的log需要使用正则表达式,勾选Regex选项,在Log Tag中输入

^(?!.*(AAA)).*$

其中AAA是要过滤的tag,适用去掉无用重复的log,如:使用SurfaceView时,经常会弹出过多绘制的log,导致刷屏。

如果需要过滤多个呢,假设还需要过滤"BBB",将

^(?!.*(AAA)).*$

修改为

^(?!.*(AAA|BBB)).*$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值