前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ADB 操作命令详解及用法大全(三)

ADB 操作命令详解及用法大全(三)

作者头像
雷子
发布2024-04-18 16:08:31
660
发布2024-04-18 16:08:31
举报

日志打印

Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

获取Android 日志

查看 Android 设备系统属性的基本命令格式是:

代码语言:javascript
复制
adb logcat [option] [filter-specs]
  • 1

如果需要停止 logcat 日志打印,可以按 Ctrl + C 停止日志监控。

按级别过滤日志

按级别过滤日志的基本命令格式是:

代码语言:javascript
复制
adb logcat [filter-specs]
  • 1

Android 的日志分为如下几个优先级(priority):

级别 含义

*:V 过滤只显示 Verbose 及以上级别(优先级最低)

*:D 过滤只显示 Debug 及以上级别

*:I 过滤只显示 Info 及以上级别

*:W 过滤只显示 Warning 及以上级别

*:E 过滤只显示 Error 及以上级别

*:F 过滤只显示 Fatal 及以上级别

*:S 过滤只显示 Silent 及以上级别(优先级最高,什么也不输出)

按某级别过滤日志则会将该级别及以上的日志输出。

比如,命令:

代码语言:javascript
复制
adb logcat *:W

会将 Warning、Error、Fatal 和 Silent 日志输出。

(注:在 macOS 下需要给 *:W 这样以 * 作为 tag 的参数加双引号,如 adb logcat "*:W",不然会报错 no matches found: *:W。)

按 tag 和级别过滤日志

按 tag 和级别过滤日志的基本命令格式是:

代码语言:javascript
复制
adb logcat [tag:level] [tag:level] ...

比如,命令:

代码语言:javascript
复制
adb logcat ActivityManager:I App:D *:S

表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag App 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

将日志格式化输出

可以用 adb logcat -v <format> 选项指定日志输出格式。 日志支持按以下几种 <format>

参数 显示格式

brief 显示格式:<priority>/<tag>(<pid>): <message>

process 显示格式:<priority>(<pid>) <message>

tag 显示格式:<priority>/<tag>: <message>

raw 显示格式:<message>

time 显示格式: <datetime> <priority>/<tag>(<pid>): <message>

threadtime 显示格式: <datetime> <pid> <tid> <priority> <tag>: <message>

long 显示格式: [ <datetime> <pid>:<tid> <priority>/<tag> ] <message>

日志格式默认为 brief,指定格式可与上面的过滤同时使用。比如:

代码语言:javascript
复制
adb logcat -v long ActivityManager:I *:S

清空已存在的日志

代码语言:javascript
复制
adb logcat -c

将日志显示在控制台

代码语言:javascript
复制
adb logcat -d

将日志输出到文件

代码语言:javascript
复制
adb logcat > log.txt

加载一个可使用的日志缓冲区供查看

代码语言:javascript
复制
adb logcat -b <Buffer>

Android log 输出量巨大,特别是通信系统的log,因此,Android把log输出到不同的缓冲区中,目前定义了四个log缓冲区:

Radio 输出通信系统的 log

System 输出系统组件的 log

Event 输出 event 模块的 log

Main 所有 java 层的 log 以及不属于上面3层的 log

缓冲区主要给系统组件使用,一般的应用不需要关心,应用的log都输出到main缓冲区中。默认log输出(不指定缓冲区的情况下)是输出System和Main缓冲区的log。

打印指定日志缓冲区的大小
代码语言:javascript
复制
adb logcat -g
内核日志
代码语言:javascript
复制
adb shell dmesg

在测试中,很多时候,对于log的需求还是比较多的,因此熟练掌握日志的使用,十分有必要。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 日志打印
    • 按级别过滤日志
      • 将日志格式化输出
        • 打印指定日志缓冲区的大小
          • 内核日志
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档