您的位置:首页 > 移动开发 > Android开发

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

2016-05-23 13:30 549 查看
一种通过自动脚本抓取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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: