关于monkey测试过程中,记录logcat的日志的整理,在logcat记录日志的时候,请参考如下命令使用,可以对定位bug更有帮助:
一、过滤日志输出:
每一个输出的Android日志信息都有一个标签和它的优先级.日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就是查看系统的标签).
优先级如下,是按照从低到高顺利排列的:
V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)
可以通过对以上级别的设置来制定输出日志的级别:
1、参数使用示例,输出特定级别的所有标签日志:
C:\Documents and Settings\caoxiurong>adb logcat *:E E/BatteryService( 66): usbOnlinePath not found E/BatteryService( 66): batteryVoltagePath not found E/BatteryService( 66): batteryTemperaturePath not found E/SurfaceFlinger( 66): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake E/EventHub( 66): could not get driver version for /dev/input/mouse0, Not a typewriter E/EventHub( 66): could not get driver version for /dev/input/mice, Not a typewriter E/System ( 66): Failure starting core service |
adb logcat *:E 中 *:E 各个标签的优先级为E的日志输出 |
2、参数使用示例,输出特定标签、特定级别的日志:
C:\Documents and Settings\caoxiurong>adb logcat System:E ActivityManager:I *:S I/ActivityManager( 66): Memory class: 24 E/System ( 66): Failure starting core service E/System ( 66): java.lang.SecurityException E/System ( 66): at android.os.BinderProxy.transact(Native Method) E/System ( 66): at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146) W/ActivityManager( 66): Unable to start service Intent { act=com.android.ussd.IExtendedNetworkService }: not found I/ActivityManager( 66): Start proc com.android.alarmclock for broadcast com.android.alarmclock/.AlarmInitReceiver: pid=169 uid=10009 gids={} |
adb logcat System:E *:S 上面表达式的最后的元素 *:S ,,是设置所有的标签为”silent”,所有日志有” System”和“ActivityManager” 。用 *:S 的另一个用处是 能够确保日志输出的时候是按照过滤器的说明限制的,让过滤器也作为一项输出到日志中.以上日志只做了部分截取,日志详情大家可以在自己的机器上运行下查看详细日志。 |
二、日志输出格式
在日志里面记录了,元数据,标签,优先级等信息。可以通过 -v 选项来制定。参数有如下选择:
brief — Display priority/tag and PID of originating process (the default format).
process — Display PID only.
tag — Display the priority/tag only.
thread — Display process:thread and priority/tag only.
raw — Display the raw log message, with no other metadata fields.
time — Display the date, invocation time, priority/tag, and PID of the originating process.
long — Display all metadata fields and separate messages with a blank lines.
3、参数使用示例,指定日志格式为time的日志:
C:\Documents and Settings\caoxiurong>adb logcat -v time 07-28 03:35:46.484 W/Zygote ( 33): Preloaded drawable resource #0x1080007 (res/drawable/btn_minus.xml) that varies with configuration!! 07-28 03:35:46.534 D/dalvikvm( 33): GC_EXPLICIT freed 415 objects / 22360 bytes in 55ms 07-28 03:35:46.615 W/Zygote ( 33): Preloaded drawable resource #0x1080009 (res/drawable/btn_radio.xml) that varies with configuration!! 07-28 03:35:46.704 W/Zygote ( 33): Preloaded drawable resource #0x108000a (res/drawable/btn_star.xml) that varies with configuration!! 07-28 03:35:46.717 W/Zygote ( 33): Preloaded drawable resource #0x1080131 (res/drawable/btn_toggle.xml) that varies with configuration!! 07-28 03:35:46.724 W/Zygote ( 33): Preloaded drawable resource #0x1080194 (res/drawable-mdpi/ic_emergency.png) that varies with configuration!! |
adb logcat -v time 这个命令是当前QA使用最多的日志格式,记录日期、时间,优先级,pid信息 |
总结:在monkey测试的时候,请至少使用 logcat -v time,这样在monkey 出现异常的时候,monkey测试的时间可以对应找到logcat的日志,这样可以准确的定位异常信息。