一、Log分类
原文链接:
Android日志主要分为kernel、radio、event、main这四种log。
Kernel Log
kernel log属于Linux内核的log ,可以通过读取/proc/kmsg或者通过串口来抓取。
adb 抓取kernel log的命令如下(需要有root权限):
- adb shell cat /proc/kmsg > /tmp/kernel.log
Radio Log
-b radio参数可以抓取Android RIL层 log,在调试Android通信方面的代码时,这个Log非常关键。抓取命令如下:
- adb logcat -b radio > /tmp/radio.log
Main Log
main log和我们在eclipse里通过DDMS中看到的log是一致的。抓取命令如下:
- adb logcat -b main > /tmp/main.log
Event Log
event log属于system log,平时可以跟在main log之后。抓取命令如下:
- adb logcat -b event -v time > /tmp/event.log
-v time表示在log中加入每条log发生的时间。
完整Log
adb logcat -b选项是可以复用的,因此我们抓取所有Log的命令就是复用了-b选项。抓取命令如下:
- adb logcat -b main -b system -b radio -b events -v time > /tmp/all.log
二、Log使用
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。
根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。
1、Log.v 的调试为黑色,任何消息都会输出
2、Log.d 的输出为蓝色,仅输出debug调试信息
3、Log.i 的输出为绿色,一般提示性消息information,无v和d的信息,会显示i、w和e的信息
4、Log.w 的意思为橙色,warning信息,需要我们注意优化Android代码,会输出e的信息。
5、Log.e 为红色错误信息,分析查看栈信息。
三 adb logcat过滤
1. 只显示需要的输出,白名单
最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:
adb logcat | grep MyApp
adb logcat | grep -i myapp #忽略大小写。
2 保存log
使用-d参数,可以在读完所有log后返回,而不会一直等待,在自动化较有用。例如:
adb logcat -d -s xxx > xxx.log //得到filter为xxx的日志,存入xxx.log,然后返回。
3 其他
adb logcat -s TAG名称 //显示某一TAG的日志信息:
adb logcat -v time -s videocamera //打印出 log 信息中时间,以及包含关键字 "videocamera" 的所有 log
原文链接: