• 作者:老汪软件技巧
  • 发表时间:2024-09-16 00:02
  • 浏览量:

在 Android 开发中,我们一般使用 logcat 来查看日志。这篇文章将介绍一些 logcat 的使用技巧,废话不多说,直接开始。

日志格式与配置

首先我们需要先了解日志由什么组成,如下图所示:

可以看到一般情况下,打印的日志信息有:日志时间、进程和线程的id、tag、包名、日志的等级和内容。

如果你不想要这么多额外的信息,可以选择设置打印日志的格式。第一步先点击如下图的按钮,选择 Modify Views 选项。

然后就会弹出下图的一个配置弹窗。根据需求配置你的 log 信息就可以了。

过滤日志

一般情况下,我们需要日志才能排除问题。但是日志一般有很多无用的信息,此时就需要过滤日志,找到想要的日志信息。logcat 提供了很多过滤器,方便我们找到想要的日志信息。

正向匹配过滤

在 logcat 中,我们可以分别指定 tag 、package、message 这三个过滤器来过获取指定的日志。package: 显示包含指定包名的日志,如果你想要只显示当前应用的日志,可以使用package:mine;tag:MyTag 显示tag包含 MyTag 的日志;message: 显示包含指定字符串的日志。

假设打印了以下的日志信息,我们用 tag:test 来过滤日志。

Log.d("test1", "print a")  
Log.d("test2", "print b")  
Log.d("test3", "print c")

结果如下。可以看到 tag:test 匹配了所有包含 test 的 tag。这是因为在 logcat 中 : 表示会匹配包含了当前字符串的日志;如果你想要完全匹配,需要使用 :=,比如说tag=:test 就是只显示 tag 为 test 的日志。

反向匹配过滤

除了正向匹配外,logcat 还支持反向匹配。反向匹配过滤使用非常地简单,只需要加上-,比如说 -tag:test 就是不显示 tag 包含 test 的日志。如下图所示,不存在包含 test 的日志信息。

需要注意,- 标识在 message 和 package 都是可用的。

正则表达式

logcat 支持正则表达式,使用也非常的简单,只需要加上 ~ 就可以了。比如说 message~: 后面就可以接正则表达式了。如下图所示:

时间过滤

logcat 可以使用 age 来进行时间过滤。值要指定为数字,后跟表示时间单位的字母:s表示秒,m表示分钟,h表示小时,d表示天。例如,age: 5m只会显示过去 5 分钟内记录的消息。如下图所示:

需要注意:age 后面跟的数字是以电脑时间为基准的。因此需要确保电脑的时间与手机的时间保持一致。

特殊的过滤

除了上面的过滤的方式外,logact 还支持使用 level 日志等级和 is 日志类型来匹配。如下图所示,使用 level 可以只显示指定日志等级的日志信息。

而 is 是只显示指定的日志类型。目前有三种:

Firebase 是谷歌推出的一个移动和 Web 应用开发平台,它提供了一系列的后端服务和工具,旨在帮助开发者更轻松地构建高质量的应用程序。

多个过滤器组合

当在 logcat 中使用多个过滤器时,相同的过滤器视为 or;不同的过滤器则视为 and。比如说 tag:test 和 tag:system_server 就等同于 tag = test || tag = system_server。如下图所示:

而当使用不同的过滤器时,比如说 level:error 和 tag:test 时,就等同于 level = error && tag = test。如下图所示: