基础知识
消息格式
logcat输出的消息格式为
date time PID-TID/package priority/tag: message
例如,下面的日志消息的优先级为 V,标记为 AuthZen:
12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.
日志级别(priority)
V: Verbose (lowest priority)
D: Debug
I: Info
W: Warning
E: Error
F: Fatal
S: Silent (highest priority, on which nothing is ever printed)
具体使用
adb logcat 一般用法是
[adb] logcat [<option>] ... [<filter-spec>] ...
选项 | 说明 |
---|---|
-c | 清空缓冲区 |
-e <expr>, --regex= | 只输出日志消息与 匹配的行,其中 是一个正则表达式 |
-f <filename> | 将日志消息输出写入 。默认值为 stdout |
-s | 根据tag过滤,相当于过滤器规范 ‘*:S’,用于放在可添加内容的过滤器规范列表之前。 |
-v <format> | 设置日志消息的输出格式。默认格式为 threadtime。有关支持的格式列表,请参阅控制日志输出格式 |
–pid=<pid> … | 仅输出来自给定 PID 的日志。 |
多tag+优先级过滤
adb logcat ActivityManager:I MyApp:D *:S
格式都是tag:priority,上面这句话的意思是只有tag为ActivityManager且优先级为I,或者tag为MyApp优先级为D,或者其他的优先级为S的日志可以输出。可以理解为是白名单,白名单里有3种。
grep多个关键字
筛选出包含aa或bb或cc或dd或ee或ff的行
adb logcat |grep "aa\|bb\|cc\|dd\|ee\|ff"
同时输出到屏幕和文件
想要把日志保存到文件,如果采用IO重定向,就无法输出到屏幕, 针对这个问题可以采用 tee命令
adb logcat | tee my.log
根据pid输出
adb logcat --pid=`adb shell pidof -s com.appp.android`
ref
https://developer.android.google.cn/studio/command-line/logcat
https://www.cnblogs.com/bydzhangxiaowei/p/8168598.html 在读