首页 / 专利库 / 电脑零配件 / 外围设备 / USB闪存盘 / 一种系统日志的收集方法

一种系统日志的收集方法

阅读:860发布:2020-05-18

专利汇可以提供一种系统日志的收集方法专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种系统日志的收集方法,应用于安卓系统的智能设备,其中,提供一日志收集的守护 进程 , 守护进程 用以在安卓设备的系统启动时启动;提供一日志处理的应用程序进程;提供一外部存储设备,用以接入智能设备;包括以下步骤:守护进程收集应用题 框架 层以及Linux 内核 的日志,并保存于安卓系统的一第一存储路径下;应用程序进程在识别接入的外部存储设备之后,于外部存储设备中创建一第二存储路径;应用程序进程于第一存储路径中获得日志并保存于第二存储路径中。其技术方案的有益效果在于,智能设备无需提供外接串口线和USB线也能被获取日志,对于工厂生产和售后等无法外接串口线和USB线的情况下,出现的问题,也能快速的 定位 问题。,下面是一种系统日志的收集方法专利的具体信息内容。

1.一种系统日志的收集方法,应用于安卓系统的智能设备,所述安卓系统的架构由上至下依次包括,应用程序层、应用框架层、系统库以及Linux内核,其特征在于,提供一日志收集的守护进程,所述守护进程用以在所述安卓设备的系统启动时启动;
提供一日志处理的应用程序进程;
提供一外部存储设备,用以接入所述智能设备;
包括以下步骤:
步骤S1、所述守护进程收集所述应用题框架层以及所述Linux内核的日志,并保存于所述安卓系统的一第一存储路径下;
步骤S2、所述应用程序进程在识别接入的所述外部存储设备之后,于所述外部存储设备中创建一第二存储路径;
步骤S3、所述应用程序进程于所述第一存储路径中获得所述日志并保存于所述第二存储路径中。
2.根据权利要求1所述的系统日志的收集方法,其特征在于,提供一配置文件,于所述配置文件中配置形成所述第一存储路径,以及配置形成所述守护进程的启动参数;
提供一初始化进程,用以在所述安卓系统启动时启动,所述初始化进程用以加载所述配置文件以启动所述守护进程。
3.根据权利要求2所述的系统日志的收集方法,其特征在于,所述初始化进程为所述安卓系统中的init进程。
4.根据权利要求1所述的系统日志的收集方法,其特征在于,所述守护进程对所述日志按照一预定大小均分成多份,且每次可保存一预定份数。
5.根据权利要求1所述的系统日志的收集方法,其特征在于,所述预定大小为1M,以及所述预定份数为10份。
6.据权利要求1所述的系统日志的收集方法,其特征在于,所述应用程序进程于启动后,向所述安卓系统注册形成一记录模以及一检测模块;
创建形成所述第二存储路径的方法包括以下步骤:
步骤A1、在所述外部存储设备接入所述智能设备之后,所述安卓系统发送一检测指令至所述检测模块;
步骤A2、所述检测模块根据所述检测指令在所述外部存储设备的根目录下检测是否是存在一目标脚本文件;
若否,退出;
步骤A3、于所述外部存储设备中创建形成所述第二存储路径以及一第三存储路径,所述记录模块用以记录所述安卓系统当前运行的程序的状态信息至所述第三存储路径。
7.据权利要求1所述的系统日志的收集方法,其特征在于,在所述第二存储路径创建形成之前,还包括以下步骤:
步骤B1、所述检测模块检测所述外部存储设备的存储容量是否大于一预设的标准存储容量;
若是,执行步骤A3;
若否,退出。
8.据权利要求7所述的系统日志的收集方法,其特征在于,所述标准存储容量为50M。
9.据权利要求6所述的系统日志的收集方法,其特征在于,在步骤A2中,通过所述记录模块检测所述外部存储设备的所述脚本文件中是否存在一获取所述智能设备中的寄存器的指令;
如是,启动一指令线程,通过所述指令线程获取所述寄存器的状态信息;
如否,退出。
10.据权利要求1所述的系统日志的收集方法,其特征在于,所述外部存储设备为Sd卡,和/或
所述外部存储设备为USB闪存盘

说明书全文

一种系统日志的收集方法

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种系统日志的收集方法。

背景技术

[0002] 系统日志是记录系统中硬件软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。在Android系统中,收集日式的方式虽然包括多种,但是比较分散。
[0003] 现有的日志收集系统,可通过输入相关的命令的获得日志,具体的,如果要看framework层的日志,需要输入logcat来获取输出信息,如果要看内核的日志,需要输入dmesg来获取输出信息,如果要看Android层每个service的运行状态,需要输入dumpsys来获取输出,这些都必须要依赖于Android系统的设备有通过串口线或者USB线连接到电脑,通过电脑的串口或者ADB命令手动输入,否则无法获取调试信息。如果系统崩溃,Android默认会保存tombstone到/data/tomebstones/下面,如果应用没有响应了,会保存traces.txt到/data/anr/,其他的日志会输出到内存。还有一些日志收集系统就是把Android原生的分散的日志收集到一起,保存到sdcard或者U盘中,最后把sdcard或者U盘里面手机到的日志文件拿到电脑上分析。
[0004] 上述的日志收集方式存在着以下缺陷:Android默认的日志收集方式,必须依赖于有串口线或者USB线连接到电脑,在工厂进行生产时由于不方便外接串口线或者USB线,在这种情况下,出现的问题由于看不到调试信息,所以没法调试。在这种情况下,往往会让产线停下来,外接串口线或者USB线,输入命令导出日志来分析。如果要使用USB线ADB的方式,Android设备必须要有OTG口,但是在很多的机顶盒和智能电视上面,都取消了OTG口,所以在这种情况就没法通过USB ADB来调试,而网络ADB一般在出厂的固件里面也不会默认使能。
[0005] 由于Android默认是把日志输出到内存里面,这是一循环缓冲区,如果这块缓冲区满了,后面的日志会覆盖前面的日志,造成相关有用的信息获取不到。
[0006] 而且如果要获取framework层的相关日志,需要在开机以后输入logcat指令,才会有framework层的相关日志,在断电或者重启以后这些日志的信息就都没有了,或者缓冲区满了以后前面的日志会被后面的日志覆盖,这样出现问题的现场信息很有可能就没有了,在这种情况下面,很难快速的定位问题。
[0007] 在进行开关机压测试的时候,如果某一次关机的时候失败了,时间长了以后日志缓冲区会满,就会把前面的有用的日志给覆盖,到输入logcat来获取日志的时候,很可能已经晚了,就会抓不到现场,导致没法定位问题。

发明内容

[0008] 针对现有技术中收集日志存在的上述问题,现提供一种旨在将分散的日志实现统一收集,智能设备无需提供外接串口线和USB线也能被获取日志的方法。
[0009] 具体技术方案如下:
[0010] 一种系统日志的收集方法,应用于安卓系统的智能设备,所述安卓系统的架构由上至下依次包括,应用程序层、应用框架层、系统库以及Linux内核,其中,提供一日志收集的守护进程,所述守护进程用以在所述安卓设备的系统启动时启动;
[0011] 提供一日志处理的应用程序进程;
[0012] 提供一外部存储设备,用以接入所述智能设备;
[0013] 包括以下步骤:
[0014] 步骤S1、所述守护进程收集所述应用题框架层以及所述Linux内核的日志,并保存于所述安卓系统的一第一存储路径下;
[0015] 步骤S2、所述应用程序进程在识别接入的所述外部存储设备之后,于所述外部存储设备中创建一第二存储路径;
[0016] 步骤S3、所述应用程序进程于所述第一存储路径中获得所述日志并保存于所述第二存储路径中。
[0017] 优选的,提供一配置文件,于所述配置文件中配置形成所述第一存储路径,以及配置形成所述守护进程的启动参数;
[0018] 提供一初始化进程,用以在所述安卓系统启动时启动,所述初始化进程用以加载所述配置文件以启动所述守护进程。
[0019] 优选的,所述初始化进程为所述安卓系统中的init进程。
[0020] 优选的,所述守护进程对所述日志按照一预定大小均分成多份,且每次可保存一预定份数。
[0021] 优选的,所述预定大小为1M,以及所述预定份数为10份。
[0022] 优选的,所述应用程序进程于启动后,向所述安卓系统注册形成一记录模块以及一检测模块;
[0023] 创建形成所述第二存储路径的方法包括以下步骤:
[0024] 步骤A1、在所述外部存储设备接入所述智能设备之后,所述安卓系统发送一检测指令至所述检测模块;
[0025] 步骤A2、所述检测模块根据所述检测指令在所述外部存储设备的根目录下检测是否是存在一目标脚本文件;
[0026] 若否,退出;
[0027] 步骤A3、于所述外部存储设备中创建形成所述第二存储路径以及一第三存储路径,所述记录模块用以记录所述安卓系统当前运行的程序的状态信息至所述第三存储路径。
[0028] 优选的,在所述第二存储路径创建形成之前,还包括以下步骤:
[0029] 步骤B1、所述检测模块检测所述外部存储设备的存储容量是否大于一预设的标准存储容量;
[0030] 若是,执行步骤A3;
[0031] 若否,退出。
[0032] 优选的,所述标准存储容量为50M。
[0033] 优选的,在步骤A2中,通过所述记录模块检测所述外部存储设备的所述脚本文件中是否存在一获取所述智能设备中的寄存器的指令;
[0034] 如是,启动一指令线程,通过所述指令线程获取所述寄存器的状态信息。
[0035] 如否,退出。
[0036] 优选的,所述外部存储设备为Sd卡,和/或
[0037] 所述外部存储设备为USB闪存盘
[0038] 上述技术方案具有如下优点或有益效果:可将系统中的日志集中保存进而可方便使用者查找日志;通过提供的守护进程收集日志,收集的还包括kernel(内核)日志,并把文件保存到设备上,这样再做压力测试的时候,可以保证上一次出问题的现场日志能够被保存下来;
[0039] 智能设备无需提供外接串口线和USB线也能被获取日志,对于工厂生产和售后等无法外接串口线和USB线的情况下,出现的问题,也能快速的定位问题。附图说明
[0040] 参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。
[0041] 图1为本发明一种系统日志的收集方法的实施例的流程图
[0042] 图2为本发明一种系统日志的收集方法的实施例中,关于形成第二存储路径的实施例的流程图;
[0043] 图3为本发明一种系统日志的收集方法的实施例中,关于判断外部接入设备的容量方法的实施例的流程图。

具体实施方式

[0044] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045] 需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0046] 下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0047] 本发明的技术方案中包括一种系统日志的收集方法。
[0048] 一种系统日志的收集方法的实施例,应用于安卓系统的智能设备,所述安卓系统的架构由上至下依次包括,应用程序层、应用框架层、系统库以及Linux内核,其中于,提供一日志收集的守护进程,所述守护进程用以在所述安卓设备的系统启动时启动;
[0049] 提供一日志处理的应用程序进程;
[0050] 提供一外部存储设备,用以接入所述智能设备;
[0051] 如图1所示,包括以下步骤:
[0052] 步骤S1、所述守护进程收集所述应用题框架层以及所述Linux内核的日志,并保存于所述安卓系统的一第一存储路径下;
[0053] 步骤S2、所述应用程序进程在识别接入的所述外部存储设备之后,于所述外部存储设备中创建一第二存储路径;
[0054] 步骤S3、所述应用程序进程于所述第一存储路径中获得所述日志并保存于所述第二存储路径中。
[0055] 针对现有技术中的对系统日志收集的方式分散,智能设备依赖有串口线或者USB线连接到上位机,通过上位机编辑指令于所述智能设备中获取日志,而现有的智能设备出于陈本或者外观的考虑取消了串口以及USB接口使得调试者无法及时的获取日志的问题。
[0056] 本发明中,通过在智能设备的系统中设置守护进程,即在设备的系统启动之后,即进入用户态之后,守护进程将获取安卓系统的应用题框架层以及所述Linux内核的日志,并统一保存至一第一存储路径下,然后通过应用程序进行将第一存储路径中的日志保存至接入的外部存储设备中,克服了现有技术中收集日志分散且依赖串口或者USB接口连接上位机通过上位机键入指令进行收集存在的操作复杂的问题。
[0057] 在一种较优的实施方式中,提供一配置文件,于所述配置文件中配置形成所述第一存储路径,以及配置形成所述守护进程的启动参数;
[0058] 提供一初始化进程,用以在所述安卓系统启动时启动,所述初始化进程用以加载所述配置文件以启动所述守护进程。
[0059] 在一种较优的实施方式中,初始化进程为安卓系统中的init进程,所述配置文件为安卓系统中的init.rc脚本文件;
[0060] 在一种较优的实施方式中,所述守护进程对所述日志按照一预定大小均分成多份,且每次可保存一预定份数。
[0061] 在一种较优的实施方式中,所述预定大小为1M,以及所述预定份数为10份。
[0062] 上述技术方案中,在init.rc文件里面的on post-fs-data里面加上:
[0063] mkdir/data/log 0771log log
[0064] 创建需要保存日志的目录即第一存储路径,这样让下面的守护进程运行以后就会把日志保存在这个目录下面。
[0065] 2)init.rc里面加上守护进程的启动参数:
[0066] service logcat/system/bin/logcat-b system-b events-b main-b crash-K-n 10-v threadtime-f/data/log/logcat.log-r 1000
[0067] class main
[0068] user log
[0069] group log
[0070] seclabel u:r:logcat:s0
[0071] 这样在Android系统以后到第一个用户态进程init以后,init进程会启动这个logcat守护进程。
[0072] logcat守护进程会收集系统打印到system,events,main和crash缓冲区的日志和kernel dmesg的日志,会以每份日志1M的大小一共保存10份,如果超过10份,会把前面保存的老的日志覆盖,以达到循环保存。每份日志的大小和保存的总份数都可以自行配置。
[0073] 需要说明的是Android原生的logcat不支持保存kernel的日志,在配置文件中扩展了参数-K,可以同时保存kernel的日志,这样当发生kernel层异常的时候,也能够从日志定位问题。
[0074] 在一种较优的实施方式中,应用程序进程于启动后,向安卓系统注册形成一记录模块以及一检测模块;
[0075] 如图2所示,创建形成第二存储路径的方法包括以下步骤:
[0076] 步骤A1、在外部存储设备接入智能设备之后,安卓系统发送一检测指令至检测模块;
[0077] 步骤A2、检测模块根据检测指令在外部存储设备的根目录下检测是否是存在一目标脚本文件;
[0078] 若否,退出;
[0079] 步骤A3、于外部存储设备中创建形成第二存储路径以及一第三存储路径,记录模块用以记录安卓系统当前运行的程序的状态信息至第三存储路径。
[0080] 在一种较优的实施方式中,在第二存储路径创建形成之前,如图3所示,还包括以下步骤:
[0081] 步骤B1、检测模块检测外部存储设备的存储容量是否大于一预设的标准存储容量;
[0082] 若是,执行步骤A3;
[0083] 若否,退出。
[0084] 在一种较优的实施方式中,标准存储容量为50M。
[0085] 在一种较优的实施方式中,在步骤A2中,通过记录模块检测外部存储设备的脚本文件中是否存在一获取智能设备中的寄存器的指令;
[0086] 如是,启动一指令线程,通过指令线程获取寄存器的状态信息。
[0087] 如否,退出。
[0088] 在一种较优的实施方式中,外部存储设备为Sd卡。
[0089] 在一种较优的实施方式中,外部存储设备为USB闪存盘。
[0090] 以下以一种具体的实施方式进行说明,在外部存储设备为,Sdcard[0091] USB闪存盘的实施例下:
[0092] 应用程序进程(ReadLog),向系统注册了一个service:记录模块(DumpServic);
[0093] 一个BroadcastReceiver:检测模块(ExternalStorageReceiver)。
[0094] 具体如下:
[0095]
[0096] 在sdcard或者U盘插入智能设备以后,系统ExternalStorageReceiver发送android.intent.action.MEDIA_MOUNTED broadcast;
[0097] ExternalStorageReceiver收到以后会首先判断这个sdcard或者U盘的根目录下面有没有目标脚本文件(.AMLCOPYLOGS,)如果没有,就执行任何操作,如果有就会启动DumpService。
[0098] 在这个service中,会首先检查插入的sdcard或者U盘的剩余存储空间是不是大于50MB,如果不是就退出。
[0099] 如果磁盘的剩余空间大于50MB,就会在磁盘的根目录下面创建目录即第二存储路径,logs-yyMMdd_HHmmss,接着启动dumpsys线程,把得到的信息保存到第三存储路径logs-yyMMdd_HHmmss/dumpsys.txt。然后创建dumpData线程,保存其他日志。会把[0100] /data/log/下面的文件读取到logs-yyMMdd_HHmmss/log/
[0101] /data/tombstones/下面的文件读取到
[0102] logs-yyMMdd_HHmmss/tombstones/
[0103] /cache/recovery/下面的文件读取到logs-yyMMdd_HHmmss/recovery/[0104] /data/anr/下面的文件读取到logs-yyMMdd_HHmmss/anr/
[0105] /system/build.prop读取到logs-yyMMdd_HHmmss/build.prop
[0106] 运行命令:getprop和dmesg把结果分别保存到
[0107] logs-yyMMdd_HHmmss/getprop.txt和logs-yyMMdd_HHmmss/dmesg中。
[0108] 针对现有技术中,通过sd卡或者U盘来收集Android原生的日志,这样可以解决不连串口线或者USB线的情况,但是针对出现花屏等需要查看寄存器状态的时候,则无法适用存在的问题。
[0109] 上述技术方案中,通过应用程序进程运行外部接入设备中的目标文件的指令以查看寄存器等状态信息,而且是可以根据问题的需要灵活配置脚本文件的命令,可以即时的出现问题现场的信息。
[0110] 具体的实施方式如下:
[0111] 如果预先放置在sd卡或者U盘里面的目标脚本文件中是否存在需要运行的命令行,如有就会启动一个指令线程(command Thread),这个线程会专用来获取Android智能设备上面当前的寄存器等系统状态。
[0112] 这个是本发明最灵活最实用的地方,可以根据当前呈现的问题,在这个.AMLCOPYLOGS的目标脚本文件中,通过编辑不用的指令获取osd寄存器的相关信息如下:
[0113] 查看osd寄存器及相关信息:
[0114] echo dump>/sys/class/graphics/fb0/debug
[0115] cat/sys/class/graphics/fb0/window_axis
[0116] cat/sys/class/graphics/fb0/scale_width
[0117] cat/sys/class/graphics/fb0/scale_height
[0118] screencap-p/storage/external_storage/udisk0/dump.png
[0119] dd if=/dev/graphics/fb0
[0120] of=/storage/external_storage/udisk0/osd.dump.bin
[0121] 查看video相关信息
[0122] echo 1>/sys/module/amvideo/parameters/debug_flag
[0123] cat/sys/class/video/video_state
[0124] cat/sys/class/video/frame_width
[0125] cat/sys/class/video/frame_height
[0126] cat/sys/class/video/axis
[0127] cat/sys/class/video/crop
[0128] cat/sys/class/video/screen_mode
[0129] cat/sys/module/amvideo/parameters/platform_type
[0130] cat/sys/module/amvideo/parameters/process_3d_type
[0131] cat/sys/class/video/frame_rate
[0132] cat/sys/class/display/mode
[0133] 查看afbc寄存器信息
[0134] echo 0xd0106b80 18>/sys/kernel/debug/aml_reg/dump
[0135] cat/sys/kernel/debug/aml_reg/dump
[0136] 查看vframe信息
[0137] cat/sys/class/video/vframe_states
[0138] cat/sys/class/ppmgr/ppmgr_vframe_states
[0139] cat/sys/class/ionvideo/vframe_states
[0140] cat/sys/class/vfm/map
[0141] 查看rdma中断信息
[0142] cat/proc/interrupts
[0143] cat/sys/module/rdma_mgr/parameters/reset_count
[0144] //查看GPU信息
[0145] cat/sys/kernel/debug/mali/utilization_pp
[0146] cat/sys/kernel/debug/mali/utilization_gp
[0147] cat/sys/kernel/debug/mali/utilization_gp_pp
[0148] cat/sys/kernel/debug/aml_clkmsr/clkmsr|grep mali
[0149] 还有其他的查看寄存器等信息的命令放到最后。
[0150] 在运行完这些命令以后,由于有些命令的输出结果是在kernel的日志里面,所以还需要运行一次dmesg的命令,来获取这些输出结果。
[0151] 以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈