Logcat是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从您的应用中使用 Log 类写入的消息。
要通过?adb?shell?运行 Logcat,一般用法如下:
[adb] logcat [<option>] ... [<filter-spec>] ...
您可以将 logcat 作为?adb?命令运行,也可以直接在模拟器或关联设备的 shell 提示中运行。
要使用 adb 查看日志输出,请转到您的?SDK platform-tools/ 目录并执行以下命令:
adb logcat
?要获取 logcat 在线帮助,请启动设备,然后执行以下命令:
adb logcat --help
?您可以建立与设备的 shell 连接并执行以下命令:
adb shell
logcat
?
下面介绍了logcat的命令行选项:
例如events或radio。默认使用 main、system 和 crash 缓冲区集。请参阅查看备用日志缓冲区
默认缓冲区集为main、system和crash。要清除所有缓冲区,请使用-b all -c。
默认值为stdout
需要使用 -r 选项
默认值为16。需要使用-f选项
默认格式为threadtime。
?
1、日志消息的标记是一个简短的字符串,指示消息所源自的系统组件(例如,“View”表示视图系统)。
2、优先级是以下字符值之一(按照从最低到最高优先级的顺序排列):
V:详细(最低优先级)
D:调试
I:信息
W:警告
E:错误
F:严重错误
S:静默(最高优先级,绝不会输出任何内容)
通过运行 Logcat 并观察每条消息的前两列,您可以获取系统中使用的带有优先级的标记列表,格式为?/
以下是使用?logcat -v brief output?命令获取的简短 Logcat 输出的示例,它表明消息与优先级“I”和标记“ActivityManager”相关:
I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
?
要将日志输出降低到可管理的水平,您可以使用过滤器表达式限制日志输出。通过过滤器表达式,您可以向系统指明您感兴趣的标记/优先级组合,系统会针对指定的标记抑制其他消息。
过滤器表达式采用?tag:priority …?格式:
tag指示您感兴趣的标记
priority指示可针对该标记报告的最低优先级
?
不低于指定优先级的标记的消息会写入日志。您可以在一个过滤器表达式中提供任意数量的 tag:priority 规范。一系列规范使用空格分隔。
以下是一个过滤器表达式的示例,该表达式会抑制除标记为“ActivityManager”、优先级不低于“信息”的日志消息,以及标记为“MyApp”、优先级不低于“调试”的日志消息以外的所有其他日志消息。
adb logcat ActivityManager:I MyApp:D *:S?
?上述表达式中最后一个元素 *:S 将所有标记的优先级设为“静默”,从而确保系统仅显示标记为“ActivityManager”和“MyApp”的日志消息。
使用 *:S 是确保日志输出受限于您已明确指定的过滤器的绝佳方式,它可以让过滤器充当日志输出的“白名单”。
以下过滤器表达式显示了优先级不低于“警告”的所有标记的所有日志消息:
adb logcat *:W?
?如果您从开发计算机运行 Logcat(相对于在远程 adb shell 上运行),则也可以通过导出环境变量?ANDROID_LOG_TAGS?的值设置默认过滤器表达式:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"?
除标记和优先级外,日志消息还包含许多元数据字段。您可以修改消息的输出格式,以便它们显示特定的元数据字段。为此,您可以使用?-v?选项,并指定下列某一受支持的输出格式。?
?
启动 Logcat 时,您可以使用 -v 选项指定所需的输出格式:
[adb] logcat [-v <format>]
?以下示例显示了如何生成输出格式为 thread 的消息:
?adb logcat -v thread
?请注意,您只能使用 -v 选项指定一种输出格式,但可以指定任意数量的有意义的修饰符。Logcat 会忽略没有意义的修饰符。
格式修饰符依据以下一个或多个修饰符的任意组合更改 Logcat 输出。
要指定格式修饰符,请使用 -v 选项,如下所示:
adb logcat -b all -v color -d?
每个 Android 日志消息都有一个与之相关联的标记和优先级。您可以将任何格式修饰符与以下任一格式选项进行组合:brief、long、process、raw、tag、thread、threadtime 和 time。
您可以通过在命令行中输入 logcat -v –help 获取格式修饰符详细信息:
Android 日志记录系统为日志消息保留了多个环形缓冲区,而且并非所有的日志消息都会发送到默认的环形缓冲区。
要查看其他日志消息,您可以使用 -b 选项运行 logcat 命令,以请求查看备用的环形缓冲区。您可以查看下列任意备用缓冲区
以下是 -b 选项的用法:
[adb] logcat [-b <buffer>]?
?以下示例显示了如何查看包含无线装置和电话相关消息的日志缓冲区
adb logcat -b radio?
?此外,您也可以为要输出的所有缓冲区指定多个 -b 标记,如下所示:
?logcat -b main -b radio -b events
?您可以指定一个 -b 标记,后跟缓冲区逗号分隔列表,例如:
logcat -b main,radio,events?
?
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取?
?