一种通过自动脚本抓取Android 手机log的方法

来源:互联网 发布:郎咸平小三 知乎 编辑:程序博客网 时间:2024/04/28 10:32

一种通过自动脚本抓取Android 手机log的方法

 

作者:Amour.Wang

 

对于android 手机调试或测试中经常需要查看手机的logcat 输出,对于开发者平时一般都是直接使用IDE 查看logcat 输出,但是在有些情况下比如:1.单纯做测试,IDE 工具保存比较麻烦,或者没有IDE 工具的情况下,这时如果需要抓手机log 就比较麻烦。 本文主要针对在没有安装android 开发环境或不想每次都打开IDE 抓log 的情况下,提供了一下方便抓log的脚本及配置,本文的最后提供工具的下载。

 

一、Logcat 的简单介绍

1、安装好android 设备驱动后,配置好ADB 环境变量后,就可以直接在windows 的命令行窗口输入 adb logcat 就会显示当前的log

 

二、过滤器的使用

网上太多的文章都写的太详细了,在我自己看来反而觉得有点不太好理解,我下面用3个简单的实例说明一下

1.      过滤某个级别的log,如下即过滤Warning 以上级别的

adb logcat *:W

 

2.         过滤 tag 为 ActivityManager级别为I 以上的

adb logcatActivityManager:I

 

3.         过滤 tag 为 ActivityManager级别为I 以上的 或者 tag 为 MyApp log级别为d 以上的

adb logcatActivityManager:I MyApp:d

 

三、输出格式

 

 日志信息包括了许多元数据域包括标签和优先级。可以修改日志的输出格式,所以可以显示出特 定的元数据域。可以通过 -v 选项得到格式化输出日志的相关信息.

 这边还是通过一个常用的例子来说明

  adb logcat –v time  通过 –v time 使输出的log 包含时间

 

如下为具体的标签说明

brief — Display priority/tag and PID of originating process (thedefault 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 theoriginating process.

long — Display all metadata fields and separate messages with a blanklines.

其他命令参考:

Option

Description

-b<buffer>

加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers.

-c

清楚屏幕上的日志.

-d

输出日志到屏幕上.

-f<filename>

指定输出日志信息的<filename> , 默认是stdout .

-g

输出指定的日志缓冲区,输出后退出.

-n <count>

设置日志的最大数目<count> ., 默认值是4,需要和 -r 选 项一起使用。

-r <kbytes>

每<kbytes> 时 输出日志,默认值为16,需要和-f 选 项一起使用.

-s

设置默认的过滤级别为silent.

-v <format>

设置日志输入格式,默认的是brief 格 式,

要知道更多的支持的格式,参看Controlling Log Output Format.

 

四.自动log 工具使用及说明

1.前提条件,安装好android 手机的驱动,并且在手机端授权ADB 调试

2.双击BAT 文件自动开始抓log 并使用当前时间作为文件名保存log

3.ctrl +C 退出 抓log

 

脚本文件如下,拷贝到记事本,另存为 xxx.bat(另外需要xxx.bat 同一目录下有adb的工具,附件压缩包内有提供)

 

@echo off

cd /d %~dp0

set devfile=%tmp%/devices.txt

:RESTART

set deviceCount=-1

for /f  "tokens=1" %%iin (%devfile%) do (

       SetLocal EnableDelayedExpansion

       set /a deviceCount+=1

       set list!deviceCount!=%%i

)

echo 当前连接设备数 %deviceCount%

if %deviceCount%==0 (

       echo 当前没有连接设备,请连接设备

       goto END

) else if %deviceCount%==1 (

       echo %list1%

       goto STARTLOG

) else if %deviceCount% gtr 1 (

       echo 当前连接超过一个设备,请断开其他设备

       goto END

)

:STARTLOG

for /f "tokens=1-4 delims=/:." %%i in("%date:~0,4%_%date:~5,2%_%date:~8,2%_%time%") do setfilename=%%i_%%j_%%k_%%l

set filenamenew=%filename%

set filenamenew=%filenamenew: =%

set logfile=%filenamenew%.txt

echo log 保存为%logfile%

adb shell -v time>%logfile%

::echo abc>%logfile%

 

:END

@pause

 

引用查询资料出处

http://www.miui.com/article-272-1.html

 

0 0