一种获取Android日志的方法和装置与流程

文档序号:16608465发布日期:2019-01-14 21:21阅读:200来源:国知局
一种获取Android日志的方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种获取android日志的方法和装置。



背景技术:

android(安卓)系统的adb日志可以分为应用日志和系统日志,对日志进行分析是开发工程师调试程序的最佳方式之一,在整个开发周期,都需要提供日志用于分析程序异常。

adb(androiddebugbridge,安卓调试桥)是android系统提供的一个通用调试工具,借助这个工具,我们可以很好地调试开发的程序,adb工具安装在android的sdk开发包platform-tools目录下。

对于应用测试,如安卓移动终端上的app测试,或者对于安卓系统的整机测试,目前工程师获取安卓日志的方法主要有两种:第一种方法为,将移动终端与电脑一直通过usb线连接,在电脑上使用安卓调试桥adb命令adblogcat实时从移动终端获取日志。该方法由于离不开usb线,整个日志获取过程中都需要电脑和移动终端全程参与,使得操作非常不方便,且无法进行户外测试。第二种方法为,工程师在移动终端中内置现有的日志工具以获取日志。然而对于应用开发,该方法由于移动终端的权限问题,仅能获取其应用日志,无法获取系统日志;对于整机开发,需要对上述日志工具进行改进以使其与移动终端适配,并且还需要开放移动终端的权限。在系统开发的初期,也没有条件内置日志工具。可见,该方法也比较复杂,且不能应用于整个开发周期。



技术实现要素:

本发明旨在提供一种获取android日志的方法和装置,操作方便,不需要全程依赖usb线进行日志获取,且能够应用于整个开发周期。

为达到上述目的,本发明采用的技术方案如下:

一种获取android日志的方法,包括:创建用于捕获日志的shell脚本;所述shell脚本在待捕获日志的android移动终端的后台运行;所述shell脚本捕获的日志存储于所述移动终端预先建立的日志文件夹中;连接pc端与所述移动终端,将所述日志文件夹提取到所述pc端;所述pc端上安装有abd工具。

优选地,所述shell脚本捕获日志包括:采用date命令接收所述移动终端的系统时间;采用logcat命令捕获当前程序的android日志,生成以所述系统时间命名的日志文件;采用echo$!命令生成所述当前程序的身份标识。

进一步地,所述shell脚本捕获日志还包括:根据程序的所述身份标识,采用kill命令杀掉捕获android日志的logcat进程。

进一步地,还包括:在所述pc端上遍历所述日志文件夹中的日志文件,判断是否捕获到有效日志;当捕获到有效日志,停止所述移动终端上的日志捕获。

进一步地,所述停止所述移动终端上的日志捕获之后,还包括:删除所述移动终端上日志文件夹中的日志文件。

优选地,使所述shell脚本在待捕获日志的android移动终端的后台运行的方法为:连接所述pc端与所述移动终端,并在所述pc端执行adbshell命令。

一种获取android日志的装置,包括:pc端,所述pc端上安装有abd工具;shell脚本,用于捕获日志;所述shell脚本在待捕获日志的android移动终端的后台运行;存储单元,用于将所述shell脚本捕获的日志存储于所述移动终端预先建立的日志文件夹中;提取单元,用于当连接所述pc端与所述移动终端时,将所述日志文件夹提取到所述pc端。

进一步地,还包括:判断单元,用于在所述pc端上遍历所述日志文件夹中的日志文件,判断是否捕获到有效日志;

停止单元,用于当捕获到有效日志,停止所述移动终端上的日志捕获。

进一步地,还包括:删除单元,用于在停止所述移动终端上的日志捕获之后,删除所述移动终端上日志文件夹中的日志文件。

本发明实施例提供的获取android日志的方法和装置,由于创建了用于捕获日志的shell脚本,并将shell脚本置于待捕获日志的android移动终端的后台运行,且shell脚本捕获的日志存储于移动终端预先建立的日志文件夹中。对移动终端进行应用或系统测试时,shell脚本在运行过程中自动将捕获到的日志存储于移动终端上;测试完成后,连接移动终端和pc端,即可将日志提取到pc端进行分析。有效克服了现有技术需要一直将pc端和移动终端采用usb线连接才能获取日志、而导致的设备发热和测试场景束缚的问题,也解决了现有的日志工具不能应用于整个开发周期的问题。本发明只要在前期将shell脚本创建好,后期测试时可自动捕获日志,操作非常方便。综上所述,本发明提供的技术方案,操作方便,不需要全程依赖usb线进行日志获取,且能够应用于整个开发周期。

附图说明

图1为本发明实施例的方法流程图;

图2为本发明实施例的装置结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。

图1为本发明实施例的方法流程图,包括:

步骤一:将pc端与移动终端通过usb线连接,通过pc端上的adb工具对预先创建的shell脚本进行激活,使shell脚本在移动终端的后台运行。pc端上安装有abd工具。具体包括以下步骤:

(a)首先在pc端上使用命令"adbshellps|grep'^[shell^|root].*logcat$'"查询移动终端上现存的用户启动的logcat程序列表,然后采用包含0000000000的信息去掉并计数logcat程序有多少行。如果大于5行则表示shell脚本重复运行,大于等于3行表示shell脚本正在运行,小于3行表示shell脚本未运行。

(b)判断shell脚本的运行状况:如果shell脚本已运行或重复运行,则返回相应的提示;如果shell脚本未运行,则根据当前pc端的时间pctime定义本次捕获的日志在移动终端上的保存目录路径logfolder="/sdcard/catchlog/pctime"+pctime+"_active",然后通过执行命令"adbshellmkdir-p"+logfolder,在移动终端上创建日志文件夹,用于存储捕获的日志。

注释:mkdir-p:mkdir-p,--parents可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

(c)创建用于捕获日志的shell脚本:首先创建一个循环体,并在循环体开头定义变量datelogcat,采用date命令接收所述移动终端的系统时间,然后采用logcat命令捕获当前程序的android日志,android日志分为五部分,分别为'main','system','radio','events','crash',我们根据需求分别执行对应部分logcat-b命令,生成以所述系统时间命名的日志文件,并保存在logfolder目录下,接着采用echo$!命令生成所述当前程序的身份标识pid,并写入到logfolder目录下指定文本中,每条logcat命令得到一个pid。最后使用sleep命令休眠一段时间后,根据程序的所述身份标识,采用kill命令杀掉捕获android日志的logcat进程。回到循环体开头重新开始捕获,生成新的日志文件来避免单个日志文件过大,以及方便根据上述系统时间来搜索指定日志。

以下为本发明实施例中的shell脚本样例:

"whiletrue;dodatelogcat=`date

+%y%m%d_%h_%m_%s`;"logcat-v

threadtime>"+logfolder+"/${datelogcat}main_system_log.txt&echo

$!>"+logfolder+"/logcatpid.txt;logcat-vthreadtime-b

radio>"+logfolder+"/${datelogcat}radio_log.txt&echo

$!>>"+logfolder+"/logcatpid.txt;logcat-vthreadtime-b

events>"+logfolder+"/${datelogcat}events_log.txt&"+"echo

$!>>"+logfolder+"/logcatpid.txt;sleep1800;kill-9`cat

"+logfolder+"/logcatpid.txt`;done&";

本实施例中的shell脚本(shellscript)与windows/dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了linux/unix下的命令。

data命令:date[选项]...[+格式],如执行"date+%y%m%d_%h_%m_%s",返回20180726_17_22_02;

logcat命令:

logcat-b<buffer>加载一个可使用的日志缓冲区供查看,比如event和radio。默认值是-bmain-bsystem-bcrash;

logcat-v<format>设置输出格式的日志消息。默认是短暂的格式。

pid:processidentifier在移动终端上每次启动一个应用时,都会随机给该应用分配一个pid。应用运行期间该应用pid不变,若重启应用,则会重新随机分配pid。

(d)将脚本内容写入一个文本文件如logcatshell.txt中。

(e)在pc端执行"adbshell<"+logcatshell.txt命令,即可让shell脚本内容在安卓移动终端的后台开始运行。

步骤二:shell脚本运行后,便可以拔掉usb线进行测试,发现问题时记录下移动终端上的时间点crashtime。

步骤三:等待测试完成,提取日志时插上usb线,通过adbpull命令将日志文件夹logfolder提取到pc端。

步骤四:提取日志后,根据日志文件名判断日志记录的时间段,然后在pc端上遍历日志文件夹中的日志文件,查询是否存在时间点crashtime,如果存在,则表明捕获到有效日志。

步骤五:当捕获到有效日志后,便可以通过adbshellps|greplogcat命令查询脚本的logcat的pid,然后通过adbshellkillpid停止移动终端上的日志捕获。此处是否停止日志捕获由用户决定。

步骤六:最后通过"adbshellrm-rf"+logfolder删除移动终端上日志文件夹中的日志文件,以便节省移动终端的存储空间。此处是否删除日志文件由用户决定。

本发明还公开一种获取android日志的装置,包括:pc端,所述pc端上安装有abd工具;shell脚本,用于捕获日志;所述shell脚本在待捕获日志的android移动终端的后台运行;存储单元,用于将所述shell脚本捕获的日志存储于所述移动终端预先建立的日志文件夹中;提取单元,用于当连接所述pc端与所述移动终端时,将所述日志文件夹提取到所述pc端。

进一步地,还包括:判断单元,用于在所述pc端上遍历所述日志文件夹中的日志文件,判断是否捕获到有效日志;停止单元,用于当捕获到有效日志,停止所述移动终端上的日志捕获。进一步地,还包括:删除单元,用于删除所述移动终端上日志文件夹中的日志文件。

本装置的工作流程与工作原理与上述获取android日志的方法相同,此处不再赘述。

本装置中,进一步地,还可以将上述这些命令进行封装,制作成界面工具,使得操作更加形象化,从而使本装置更加简单使用。

本发明实施例提供的获取android日志的方法和装置,由于创建了用于捕获日志的shell脚本,并将shell脚本置于待捕获日志的android移动终端的后台运行,且shell脚本捕获的日志存储于移动终端预先建立的日志文件夹中。对移动终端进行应用或系统测试时,shell脚本在运行过程中自动将捕获到的日志存储于移动终端上;测试完成后,连接移动终端和pc端,即可将日志提取到pc端进行分析。有效克服了现有技术需要一直将pc端和移动终端采用usb线连接才能获取日志、而导致的设备发热和测试场景束缚的问题,也解决了现有的日志工具不能应用于整个开发周期的问题。本发明只要在前期将shell脚本创建好,后期测试时可自动捕获日志,操作非常方便。综上所述,本发明提供的技术方案,操作方便,不需要全程依赖usb线进行日志获取,且能够应用于整个开发周期。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1