一、Log分类:Android日志主要分为kernel、radio、event、main这四种log。
1、kernel log
kernel log属于Linux内核的log ,可以通过读取/proc/kmsg或者通过串口来抓取。
adb 抓取kernel log的命令如下(需要有root权限):
adb shell cat /proc/kmsg > e://kernel.log
2、radio log
-抓取Android RIL层 log,在调试Android通信方面的代码时,这个Log非常关键。抓取命令如下:
adb logcat -b radio >e://radio.log
3、main log
main log和我们在eclipse里通过DDMS中看到的log是一致的。抓取命令如下:
adb logcat -b main >e://main.log
4、event Log
event log属于system log,平时可以跟在main log之后。抓取命令如下:
adb logcat -b event -v time > e://event.log (-v time表示在log中加入每条log发生的时间)
5、完整Log
adb logcat -b选项是可以复用的,因此我们抓取所有Log的命令就是复用了-b选项。抓取命令如下:
adb logcat -b main -b system -b radio -b events -v time > e://all.log
6、android输出的每一条日志都有一个标记和优先级与其关联。
优先级是下面的字符,顺序是从低到高:
V — 明细 verbose(最低优先级)
D — 调试 debug
I — 信息 info
W — 警告 warn
E — 错误 error
F — 严重错误 fatal
S — 无记载 silent
二、过滤log
1、清除缓存的log信息
adb logcat -c
2、使用I,V,D,E,F,W 等过滤
adb logcat *:I //显示所有优先级大于等于“info”的日志
adb logcat *:V//显示所有优先级大于等于“verbose”的日志
adb logcat ActivityManager:I *:S //仅输出标记为“ActivityManager”且优先级大于等于“Info”的日志
3、分类展示
adb logcat -s papaya //显示 papaya 的日志信息
adb logcat -v tag //按照标签来打印日志信息
adb logcat -v thread // 显示 I,D,E等日志类型的进程ID、线程ID
4、grep 过滤(windows 可用find代替)
adb logcat | grep PID //根据进程id来过滤
adb logcat | grep -i myapp //根据字符串来过滤,并忽略大小写
adb logcat | grep "^..MyApp" //仅匹配 tag 过滤, tag 是一行开头的第三个字符开始