数据收集方法、装置、电子设备及存储介质与流程

文档序号:23628695发布日期:2021-01-12 10:42阅读:66来源:国知局
数据收集方法、装置、电子设备及存储介质与流程
本发明实施例涉及数据处理
技术领域
,尤其涉及一种数据收集方法、装置、电子设备及存储介质。
背景技术
:日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过日志来检查错误发生的原因,或者寻找系统受到攻击时攻击者留下的痕迹。目前,系统所生成的日志缓存在内存中,并且当内存中的日志缓存到一定大小后,会按时间顺序把一部分旧的日志清除掉,从而腾出空间来缓存新的日志。当想要收集系统产生的日志时,则需要用户预先打开收集日志的工具,或者由工程师把android设备用usb线连接到电脑上,调通adb连接,再用adblogcat命令收集日志。然而,在应用中,并无法保证系统发生异常时能够打开收集日志的工具,或者当系统发生异常时,工程师并无法到现场进行手动收集日志,这就导致在系统发生异常时无法有效地收集日志,进而导致工程师对系统异常原因分析和统计的效率不高。技术实现要素:鉴于此,为解决上述系统发生异常时无法有效地收集日志的问题,本发明实施例提供一种数据收集方法、装置、电子设备及存储介质。第一方面,本发明实施例提供一种数据收集方法,包括:在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志;拦截所述日志,以及提取所述日志的日志标签,所述日志标签用于表示所述异常事件对应的异常类型;基于所述日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据。在一个可能的实施方式中,所述当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志,包括:当设置于监测代码中的埋点被触发时,调用预设的日志接口生成设定日志类型的日志,所述监测代码用于监测系统运行过程中发生的异常事件。在一个可能的实施方式中,所述拦截所述日志,包括:识别所述日志的日志类型;若所述日志类型为所述设定日志类型,则拦截所述日志。在一个可能的实施方式中,所述基于日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据,包括:以所述日志标签为关键字查找预设的配置信息,所述配置信息包括日志标签与数据收集规则的对应关系;若查找到包含所述关键字的目标对应关系,则根据所述目标对应关系中的数据收集规则收集数据。在一个可能的实施方式中,还包括:将所述日志存入对应的日志缓冲区,以及在所述日志缓冲区中日志的数量达到预设阈值时,将所述日志缓冲区中的日志存入指定路径下的日志文件中。在一个可能的实施方式中,还包括:将所述日志文件和/或收集到的数据发送至后台服务器。第二方面,本发明实施例提供一种数据收集装置,包括:日志生成模块,用于在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志;日志拦截模块,用于拦截所述日志,以及提取所述日志的日志标签,所述日志标签用于表示所述异常事件对应的异常类型;数据收集模块,用于基于所述日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据。在一个可能的实施方式中,所述日志生成模块具体用于:当设置于监测代码中的埋点被触发时,调用预设的日志接口生成设定日志类型的日志,所述监测代码用于监测系统运行过程中发生的异常事件。在一个可能的实施方式中,所述日志拦截模块具体用于:识别所述日志的日志类型;若所述日志类型为所述设定日志类型,则拦截所述日志。在一个可能的实施方式中,所述数据收集模块具体用于:以所述日志标签为关键字查找预设的配置信息,所述配置信息包括日志标签与数据收集规则的对应关系;若查找到包含所述关键字的目标对应关系,则根据所述目标对应关系中的数据收集规则收集数据。在一个可能的实施方式中,还包括:日志存储模块,用于将所述日志存入对应的日志缓冲区,以及在所述日志缓冲区中日志的数量达到预设阈值时,将所述日志缓冲区中的日志存入指定路径下的日志文件中。在一个可能的实施方式中,还包括:数据上报模块,用于将所述日志文件和/或收集到的数据发送至后台服务器。第三方面,本发明实施例提供一种电子设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据收集程序,以实现第一方面中任一项所述的数据收集方法。第四方面,本发明实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面中任一项所述的数据收集方法。本发明实施例提供的数据收集方法,通过在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与异常事件对应的日志,拦截所述日志,以及提取所述日志的日志标签,基于所述日志标签确定对应的数据收集规则以根据数据收集规则收集数据,实现了在系统发生异常时自动收集数据,进一步,还实现了基于异常事件对应的异常类型收集相应的数据,从而有助于工程师根据收集到的数据有效、快速地定位系统发生异常的原因。附图说明图1为本发明一示例性实施例提供的一种数据收集方法的实施例流程图;图2为本发明一示例性实施例提供的一种数据收集装置的实施例框图;图3为本发明实施例提供的一种的电子设备的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合附图以具体实施例对本发明提供的数据收集方法做进一步的解释说明,实施例并不构成对本发明实施例的限定。参见图1,为本发明一示例性实施例提供的一种数据收集方法的实施例流程图。作为一个实施例,该方法可应用与电子设备,在一个例子中,该电子设备可以为安卓设备。如图1所示,该方法包括以下步骤:步骤101、在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与该异常事件对应的日志。作为一个实施例,可通过以下方式实现在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与该异常事件对应的日志:预先在用于监测系统运行过程中发生的异常事件的监测代码中进行埋点,如此当系统发生异常事件时,运行监测代码,设置于监测代码中的埋点被触发。进一步,当设置于监测代码中的埋点被触发时,调用预设的日志接口生成与异常事件对应的日志。一个例子,上述日志接口的实现代码如下:在该例子中,调用上述日志接口生成的日志由以下四个部分组成:日志id、日志的优先级、日志标签,以及日志内容。其中,日志id用于表示日志类型,并且调用上述日志接口生成的日志具有相同的日志类型(以下称设定日志类型),比如reporter类型,这也就是说,当设置于监测代码中的埋点被触发时,调用预设的日志接口生成设定日志类型的日志。需要说明的是,安卓系统中原有的日志类型共有8种,分别为main、radio、events、system、crash、stats、security、kernel,且该8种日志类型对应的日志id为0~7,基于此,为实现后续能够区分调用上述日志接口生成的日志,即系统运行过程中,发生的异常事件对应的日志和上述安卓系统中原有的日志,可在上述日志接口中设置一个不同于0~7的日志id,比如8,以通过该日志id表示一个不同于上述8种日志类型的日志类型。日志的优先级可用于表示日志的重要程度。可以理解的是,日志的优先级越高,则表示日志越为重要。日志标签则可用于表示日志对应的异常事件的异常类型。需要说明的是,在本发明实施例中,对应不同异常类型的异常事件,调用上述日志接口生成的日志虽然具有相同的日志类型,均为设定日志类型,但具有不同的日志标签。比如,在监听到应用crash异常的异常事件时,所生成日志的日志标签为100100,再比如,在监听到应用anr异常的异常事件时,所生成日志的日志标签为100101。步骤102、拦截所述日志,以及提取日志的日志标签,日志标签用于表示异常事件对应的异常类型。步骤103、基于日志标签确定对应的数据收集规则以根据数据收集规则收集数据。以下对步骤102~103进行统一说明:由上述步骤102~103可见,本发明实施例中,在生成与异常事件对应的日志后,并非如现有技术中一般直接将该日志存入对应的日志缓冲区,而是先拦截该日志,以提取该日志的日志标签,然后基于提取到的日志标签确定对应的数据收集规则以根据数据收集规则收集数据,这就实现了在系统发生异常时能够自动收集数据。进一步地,由于日志标签表示异常事件对应的异常类型,因此基于提取到的日志标签确定对应的数据收集规则也就相当于基于异常事件对应的异常类型确定对应的数据收集规则,这就实现了基于异常事件对应的异常类型收集相应的数据。上述所说的数据包括但不限于:系统运行过程中产生的日志、系统信息(比如cpu使用信息、内存使用信息等)等。由此可见,在本发明实施例中,在系统发生异常时,不仅能够收集系统产生的日志,还能够收集系统异常时的系统信息,这能够使得工程师根据收集到的数据更有效地定位系统发生异常的原因。作为一个实施例,由上述描述可知,在系统发生异常时,生成的日志具有设定日志类型,基于此,在步骤102中,可通过识别日志的日志类型,若识别到的日志类型为上述设定日志类型,则意味着系统发生异常,从而拦截系统发生异常时生成的日志。作为一个实施例,在步骤103中,可以提取到的日志标签为关键字查找预设的配置信息,该配置信息包括日志标签与数据收集规则的对应关系,若查找到包含该关键字的对应关系(为描述方便,以下称目标对应关系),则根据目标对应关系中的数据收集规则收集数据。举例来说,如下述表1所示,为配置信息的一种示例:表1日志标签数据收集规则0不做处理1收集最近一段时间内的日志2收集系统当前的cpu使用信息……4收集系统当前的内存使用信息……8收集设定路径下的指定文件在上述表1中,收集最近一段时间内的日志是指收集系统按照原有逻辑生成的日志,比如,可以使用logcat命令收集系统内存中缓存的日志。本发明实施例提供的数据收集方法,通过在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与异常事件对应的日志,拦截所述日志,以及提取所述日志的日志标签,基于所述日志标签确定对应的数据收集规则以根据数据收集规则收集数据,实现了在系统发生异常时自动收集数据,进一步,还实现了基于异常事件对应的异常类型收集相应的数据,从而有助于工程师根据收集到的数据有效、快速地定位系统发生异常的原因。在上述图1所示流程的基础上,作为一个实施例,可将系统发生异常时生成的日志存入对应的日志缓冲区,其中,不同的日志缓冲区可用于存储不同日志类型的日志,并在该日志缓冲区中日志的数量达到预设阈值时,将日志缓冲区中的日志存入指定路径下的日志文件中。可选的,该日志文件以时间戳为后缀。进一步地,作为一个实施例,电子设备可将上述日志文件和/或收集到的数据发送至相应的后台服务器。如此则可实现后台服务器通过解析接收到的日志文件和/或数据,统计出电子设备的性能、功耗、稳定性等参数,并以表格或曲线图的形式表现该些参数,以供用户分析电子设备系统运行过程中发生异常的原因。可选地,电子设备可周期性地,比如每隔一天,则将日志文件和/或收集到的数据发送至相应的后台服务器。再进一步地,用户可以在后台服务器上修改上述配置信息,再将修改后的配置信息下发到电子设备中,如此则可控制电子设备在系统发生异常时是否收集数据,或者收集哪些数据,实现了灵活地进行数据收集。一个具体例子:在安卓设备中,安卓日志系统在生成与异常事件对应的日志后,通过socket通信机制将该日志发送至logd进程。目前的方案中,logd进程接收到日志后,则将日志存入对应的日志缓冲区中,而在本发明实施例中,logd进程识别接收到的日志的日志类型,若识别出的日志类型为设定日志类型,则拦截该日志,并进一步提取该日志的日志标签,将提取到的日志标签发送至native服务层,同时还将日志存入对应的日志缓冲区,以及在日志缓冲区中日志的数量达到预设阈值时,将日志缓冲区中的日志存入指定路径下的日志文件中。native服务层则在接收到日志标签后,调用相应的功能实现以日志标签为关键字查找预设的配置信息,若查找到包含该关键字的目标对应关系,则根据目标对应关系中的数据收集规则收集数据。进一步地,java服务定时获取上述日志文件和/或收集到的数据,将获取到的日志文件和/或数据通过网络上传给后台服务器。与前述数据收集方法的实施例相对应,本发明还提供数据收集装置的实施例。参见图2,为本发明一示例性实施例提供的一种数据收集装置的实施例框图。如图2所示,该装置包括:日志生成模块21、日志拦截模块22,以及数据收集模块23。其中,日志生成模块21,用于在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志;日志拦截模块22,用于拦截所述日志,以及提取所述日志的日志标签,所述日志标签用于表示所述异常事件对应的异常类型;数据收集模块23,用于基于所述日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据。在一个可能的实施方式中,所述日志生成模块21具体用于:当设置于监测代码中的埋点被触发时,调用预设的日志接口生成设定日志类型的日志,所述监测代码用于监测系统运行过程中发生的异常事件。在一个可能的实施方式中,所述日志拦截模块22具体用于:识别所述日志的日志类型;若所述日志类型为所述设定日志类型,则拦截所述日志。在一个可能的实施方式中,所述数据收集模块23具体用于:以所述日志标签为关键字查找预设的配置信息,所述配置信息包括日志标签与数据收集规则的对应关系;若查找到包含所述关键字的目标对应关系,则根据所述目标对应关系中的数据收集规则收集数据。在一个可能的实施方式中,还包括(图2中未示出):日志存储模块,用于将所述日志存入对应的日志缓冲区,以及在所述日志缓冲区中日志的数量达到预设阈值时,将所述日志缓冲区中的日志存入指定路径下的日志文件中。在一个可能的实施方式中,还包括(图2中未示出):数据上报模块,用于将所述日志文件和/或收集到的数据发送至后台服务器。图3为本发明实施例提供的一种的电子设备的结构示意图,图3所示的电子设备300包括:至少一个处理器301、存储器302、至少一个网络接口304和其他用户接口303。电子设备300中的各个组件通过总线系统305耦合在一起。可理解,总线系统305用于实现这些组件之间的连接通信。总线系统305除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统305。其中,用户接口303可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。可以理解,本发明实施例中的存储器302可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。本文描述的存储器302旨在包括但不限于这些和任意其它适合类型的存储器。在一些实施方式中,存储器302存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统3021和应用程序3022。其中,操作系统3021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序3022,包含各种应用程序,例如媒体播放器(mediaplayer)、浏览器(browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序3022中。在本发明实施例中,通过调用存储器302存储的程序或指令,具体的,可以是应用程序3022中存储的程序或指令,处理器301用于执行各方法实施例所提供的方法步骤,例如包括:在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志;拦截所述日志,以及提取所述日志的日志标签,所述日志标签用于表示所述异常事件对应的异常类型;基于所述日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据。在一个可能的实施方式中,所述当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志,包括:当设置于监测代码中的埋点被触发时,调用预设的日志接口生成设定日志类型的日志,所述监测代码用于监测系统运行过程中发生的异常事件。在一个可能的实施方式中,所述拦截所述日志,包括:识别所述日志的日志类型;若所述日志类型为所述设定日志类型,则拦截所述日志。在一个可能的实施方式中,所述基于日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据,包括:以所述日志标签为关键字查找预设的配置信息,所述配置信息包括日志标签与数据收集规则的对应关系;若查找到包含所述关键字的目标对应关系,则根据所述目标对应关系中的数据收集规则收集数据。在一个可能的实施方式中,还包括:将所述日志存入对应的日志缓冲区,以及在所述日志缓冲区中日志的数量达到预设阈值时,将所述日志缓冲区中的日志存入指定路径下的日志文件中。在一个可能的实施方式中,还包括:将所述日志文件和/或收集到的数据发送至后台服务器。上述本发明实施例揭示的方法可以应用于处理器301中,或者由处理器301实现。处理器301可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器301中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器301可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器302,处理器301读取存储器302中的信息,结合其硬件完成上述方法的步骤。可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(applicationspecificintegratedcircuits,asic)、数字信号处理器(digitalsignalprocessing,dsp)、数字信号处理设备(dspdevice,dspd)、可编程逻辑设备(programmablelogicdevice,pld)、现场可编程门阵列(field-programmablegatearray,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。本实施例提供的电子设备可以是如图3中所示的电子设备,可执行如图1中数据收集方法的所有步骤,进而实现图1所示数据收集方法的技术效果,具体请参照图1相关描述,为简洁描述,在此不作赘述。本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的数据收集方法。所述处理器用于执行存储器中存储的数据收集程序,以实现以下在电子设备侧执行的数据收集方法的步骤:在系统运行过程中,当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志;拦截所述日志,以及提取所述日志的日志标签,所述日志标签用于表示所述异常事件对应的异常类型;基于所述日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据。在一个可能的实施方式中,所述当监听到用于指示系统发生异常的异常事件时,生成与所述异常事件对应的日志,包括:当设置于监测代码中的埋点被触发时,调用预设的日志接口生成设定日志类型的日志,所述监测代码用于监测系统运行过程中发生的异常事件。在一个可能的实施方式中,所述拦截所述日志,包括:识别所述日志的日志类型;若所述日志类型为所述设定日志类型,则拦截所述日志。在一个可能的实施方式中,所述基于日志标签确定对应的数据收集规则以根据所述数据收集规则收集数据,包括:以所述日志标签为关键字查找预设的配置信息,所述配置信息包括日志标签与数据收集规则的对应关系;若查找到包含所述关键字的目标对应关系,则根据所述目标对应关系中的数据收集规则收集数据。在一个可能的实施方式中,还包括:将所述日志存入对应的日志缓冲区,以及在所述日志缓冲区中日志的数量达到预设阈值时,将所述日志缓冲区中的日志存入指定路径下的日志文件中。在一个可能的实施方式中,还包括:将所述日志文件和/或收集到的数据发送至后台服务器。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域
内所公知的任意其它形式的存储介质中。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1