本文主要分享如何使用adb输出开发过程中的日志信息,如有错误,欢迎指正。
更多Android技术分享可以关注我的Android技术圈子,也可以加入QQ群号:690347536,学习交流Android开发技能。
一、adb 输出日志信息
- 基本使用:
[adb] logcat [options] ... [filter-spec]...
-b:加载可供查看的备用日志缓冲区.
-c:清除(清空)所选的缓冲区并退出
-e <expr>/--regex:只输出日志消息与 `<expr>` 匹配的行,其中 `<expr>` 是正则表达式
-m <count>/--max-count:输出 `<count>` 行后退出
--print:与 `--regex` 和 `--max-count` 配对,使内容绕过正则表达式过滤器,但仍能够在
获得适当数量的匹配时停止
-d:将日志转储到屏幕并退出
-f <filename>:将日志消息输出写入 `<filename>`。默认值为 `stdout`
-g:输出指定日志缓冲区的大小并退出
-s:相当于过滤器表达式 `'*:S'`
-D:输出各个日志缓冲区之间的分隔线
-t <time>:输出自指定时间以来的最新行
--pid=<pid>...:仅输出来自给定 PID 的日志
-
日志等级过滤:
打印日志优先级从低到高顺序
V:详细(最低优先级)D:调试I:信息W:警告E:错误F:严重错误S:静默(最高优先级,绝不会输出任何内容)
对应代码
Log类记录日志中的Log.v(String,String); Log.d(String,String); Log.i(String,String); Log.w(String,String); Log.e(String,String); -
日志输出格式:
brief:显示优先级、标记以及发出消息的进程的 PID。long:显示所有元数据字段,并使用空白行分隔消息。process:仅显示 PID。raw:显示不包含其他元数据字段的原始日志消息。tag:仅显示优先级和标记。thread::旧版格式,显示优先级、PID 以及发出消息的线程的 TID。threadtime(默认值):显示日期、调用时间、优先级、标记、PID 以及发出消息的线程的 TID。time:显示日期、调用时间、优先级、标记以及发出消息的进程的 PID
eg:
adb logcat -v thread生成输出格式为thread的消息 -
格式修饰符:
color:使用不同的颜色来显示每个优先级。descriptive:显示日志缓冲区事件说明。此修饰符仅影响事件日志缓冲区消息,不会对其他非二进制 文件缓冲区产生任何影响。事件说明取自 event-log-tags 数据库。epoch:显示自 1970 年 1 月 1 日以来的时间(以秒为单位)。monotonic:显示自上次启动以来的时间(以 CPU 秒为单位)。printable:确保所有二进制日志记录内容都进行了转义。uid:如果访问控制允许,则显示 UID 或记录的进程的 Android ID。usec:显示精确到微秒的时间。UTC:显示 UTC 时间。year:将年份添加到显示的时间。zone:将本地时区添加到显示的时间 格式修饰符依据以下一个或多个修饰符的任意组合更改 Logcat 输出。如要指定格式修饰符,请使用-v选 项,如下所示 eg:adb logcat -b all -v color -d
-
查看备用日志缓冲区:
Android 日志记录系统为日志消息保留了多个环形缓冲区,而且并非所有的日志消息都会发送到默认的环形缓冲区。如要查看其他日志消息,可以使用
-b选项运行logcat命令,以请求查看备用的环形缓冲区。可以查看下列任意备用缓冲区:radio:查看包含无线装置/电话相关消息的缓冲区。events:查看已经过解译的二进制系统事件缓冲区消息。main:查看主日志缓冲区(默认),不包含系统和崩溃日志消息。system:查看系统日志缓冲区(默认)。crash:查看崩溃日志缓冲区(默认)。all:查看所有缓冲区。default:报告main、system和crash缓冲区。
更多Android技术分享可以关注我的Android技术圈子,也可以加入QQ群号:690347536,学习交流Android开发技能。