掌桥专利:专业的专利平台
掌桥专利
首页

一种异常日志信息自动收集的方法、装置、设备和介质

文献发布时间:2023-06-19 10:54:12


一种异常日志信息自动收集的方法、装置、设备和介质

技术领域

本发明涉及计算机技术领域,特别涉及一种应用程序的异常日志信息自动收集的方法、装置、设备和介质。

背景技术

随着智能电子设备的普及,基于android及ios的智能手机、平板,智能android设备等成为了日常生活中必不可少的电子设备。在电子设备使用过程中,经常会出现应用程序运行异常问题,在出现上述问题时会导致设备应用异常退出。设备出现异常退出问题时则需要反馈并复现定位问题,目前,或者生成异常日志文件后通常需要开发人员手动从众多的日志文件中查找异常日志,并人为地对该异常日志进行仔细分析以确定异常日志产生的原因。

于20190222公开的,公开号为CN109376056A的中国发明揭示了一种异常日志分析方法、装置、存储介质、移动终端及服务器。方法包括:当检测到异常日志分析事件被触发时,获取所述移动终端的异常日志;将所述异常日志发送至服务器,所述异常日志用于指示所述服务器确定所述异常日志的异常来源,并将所述异常来源发送至所述移动终端;接收所述异常来源,并显示所述异常来源。该发明直接将移动终端运行异常时产生的异常日志发送服务器,使服务器根据异常日志,准确、快速地确定出异常日志的异常来源,并及时反馈给移动终端,但是当在同一设备上重复发生相同异常时,该方案不会防止重复上报相同的异常信息,造成资源浪费。

于20151104公开的,公开号为CN105025318A的中国发明实施例公开了一种应用程序的异常日志信息的反馈方法及装置,一种应用程序的异常日志信息的反馈方法包括:在应用程序出现异常情况时,启动针对应用程序的日志信息收集功能,并启动对异常情况的监测功能;在监测到异常情况复现后,关闭日志信息收集功能,并将收集到的日志信息保存为应用程序的异常日志信息;将异常日志信息反馈给预设服务器。其是仅将应用程序的异常日志信息反馈给预设服务器,针对性较好,方便开发人员对应用程序的异常情况进行分析和处理。但同样的,当在同一设备上重复发生相同异常时,该方案不会防止重复上报相同的异常信息,造成资源浪费。

发明内容

本发明要解决的技术问题,在于提供一种异常日志信息自动收集的方法、装置、设备和介质,可以有效防止相同异常的重复上报。

第一方面,本发明提供了一种异常日志信息自动收集的方法,包括下述步骤:

S1、当应用的异常发生时,捕获异常信息,包括异常源码信息和异常信息描述;

S2、根据所述异常源码信息和异常信息描述生成异常id;

S3、根据异常id生成异常日志的文件名,该文件名包括异常id、设备id和日志文件生成时间的信息;

S4、根据异常id判断所述异常日志是否上传到日志服务器,若是,则忽略;若否,则将所述异常日志上传到日志服务器,若上传成功则在本地记录对应的异常id,若上传失败则将异常日志保存在本地,等待下一次补传。

第二方面,本发明提供了一种异常日志信息自动收集的装置,包括:

异常捕获模块,用于当应用的异常发生时,捕获异常信息,包括异常源码信息和异常信息描述;

异常id生成模块,用于根据所述异常源码信息和异常信息描述生成异常id;

文件名生成模块,用于根据异常id生成异常日志的文件名,该文件名包括异常id、设备id和日志文件生成时间的信息;

上传模块,用于根据异常id判断所述异常日志是否上传到日志服务器,若是,则忽略;若否,则将所述异常日志上传到日志服务器,若上传成功则在本地记录对应的异常id,若上传失败则将异常日志保存在本地,等待下一次补传。

第三方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。

第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:本发明提出一种基于异常id过滤掉重复异常的上报,其异常日志的文件名除了异常id外,还加入设备id和日志文件生成时间的信息,使日志文件服务器能仅根据文件名即可快速找出不同的异常文件,并快速定位相关的异常问题,能有效减轻日志文件分析工作;当文件名中加应用版本信息时,还可根据异常id与应用版本号的结合过滤机制,即可直接从日志服务器的文件名分析每个版本的异常类型数,并从日志文件内容知道具体的异常位置及原因;本发明只需要一个简单的http或ftp日志服务器即可,无需单独开发日志服务器,易于搭建实现。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

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

图2为本发明异常日志文件名的生成过程流程图;

图3为本发明实施例二中装置的结构示意图;

图4为本发明实施例三中电子设备的结构示意图;

图5为本发明实施例四中介质的结构示意图。

具体实施方式

本申请实施例通过提供一种异常日志信息自动收集的方法、装置、设备和介质,可以有效防止相同异常的重复上报。

本申请实施例中的技术方案,总体思路如下:在应用的异常发生时,捕获异常信息并根据异常信息生成异常id;根据异常id生成异常日志的文件名,即可基于文件名中的异常id过滤掉重复异常的上报,其异常日志的文件名除了异常id外,还加入设备id和日志文件生成时间的信息,使日志文件服务器能仅根据文件名即可快速找出不同的异常文件,并快速定位相关的异常问题,能有效减轻日志文件分析工作;特别是当文件名中加应用版本信息时,还可根据异常id与应用版本号的结合过滤机制,即可直接从日志服务器的文件名分析每个版本的异常类型数,并从日志文件内容知道具体的异常位置及原因。

实施例一

如图1所示,本实施例提供一种异常日志信息自动收集的方法,包括下述步骤:

S1、当应用的异常发生时,捕获异常信息,包括异常源码信息和异常信息描述,还可包括异常调用栈信息;当应用启动时,即可启用异常信息捕获功能;

S2、根据所述异常源码信息和异常信息描述生成异常id;

S3、根据异常id生成异常日志的文件名,该文件名包括异常id、设备id和日志文件生成时间的信息;

S4、根据异常id判断所述异常日志是否上传到日志服务器,若是,则忽略;若否,则将所述异常日志上传到日志服务器,若上传成功则在本地记录对应的异常id,若上传失败则将异常日志保存在本地,等待下一次补传。其中,所述补传是:应用启动时,检查本地是否有异常日志文件未成功上传至日志服务器,如果有,则上传该异常日志文件。

其中,作为本实施例的一种更优的实现方式或更为具体的实现方式:

所述异常源码信息包括源码文件名、函数名和行号,可以表征异常发生的源码位置;

所述异常id的生成规则是:由所述源码文件名、所述函数名和所述异常信息描述组成字符串,再由所述字符串生成md5值,则该md5值的字符串形式即为所述异常id。

所述异常日志的文件名还包括应用版本信息,应用版本信息即应用版本号,当应用进行版本升级时,清除本地已上传异常日志的异常id,当相同的异常在新版本中复现时,重新上传一次异常日志;

所述日志文件服务器为http服务器或ftp服务器,所述日志文件服务器分析异常日志文件时直接根据异常id,应用版本号来分类过滤,直接从异常日志的文件名分析每个应用版本的异常类型数,并从异常日志的文件内容判断具体的异常位置及原因。

如图2所示,为异常日志文件名的生成过程,因此较完整的异常日志文件名为:

<异常id>_<应用版本号>_<设备id>_<日志文件生成时间>.log;如:528a5d7524a54782cd15568d542c4b52_101_13055234567_20201219102030.log。

设备id:对于有注册用户的应用,所述设备id为用户id(如手机号等),对于无注册用户的应用,所述设备id为设备mac地址。

日志文件生成时间:格式为yyyymmddHHMMSS,所述yyyy为四位数年份,所述mm为两位数月份,所述dd为两位数日期,所述HH为两位数小时,所述MM为两位数分钟,所述SS为两位数秒钟。如:2020-12-1910:20:30时生成的日志,则表示成20201219102030。

基于同一发明构思,本申请还提供了与实施例一中的方法对应的装置,详见实施例二。

实施例二

如图3所示,在本实施例中提供了一种异常日志信息自动收集的装置,包括:

异常捕获模块,用于当应用的异常发生时,捕获异常信息,包括异常源码信息和异常信息描述;

异常id生成模块,用于根据所述异常源码信息和异常信息描述生成异常id;

文件名生成模块,用于根据异常id生成异常日志的文件名,该文件名包括异常id、设备id和日志文件生成时间的信息;

上传模块,用于根据异常id判断所述异常日志是否上传到日志服务器,若是,则忽略;若否,则将所述异常日志上传到日志服务器,若上传成功则在本地记录对应的异常id,若上传失败则将异常日志保存在本地,等待下一次补传。所述上传模块的补传是:应用启动时,检查本地是否有异常日志文件未成功上传至日志服务器,如果有,则上传该异常日志文件。

其中,作为本实施例的一种更优的实现方式或更为具体的实现方式:

所述异常源码信息包括源码文件名、函数名和行号;

所述异常id生成模块生成异常id的规则是:由所述源码文件名、所述函数名和所述异常信息描述组成字符串,再由所述字符串生成md5值,则该md5值的字符串形式即为所述异常id。

所述异常日志的文件名还包括应用版本信息,当应用进行版本升级时,清除本地已上传异常日志的异常id,当相同的异常在新版本中复现时,重新上传一次异常日志;

所述日志文件服务器为http服务器或ftp服务器,所述日志文件服务器分析异常日志文件时直接根据异常id,应用版本号来分类过滤,直接从异常日志的文件名分析每个应用版本的异常类型数,并从异常日志的文件内容判断具体的异常位置及原因。

如图2所示,为异常日志文件名的生成过程,因此较完整的异常日志文件名为:

<异常id>_<应用版本号>_<设备id>_<日志文件生成时间>.log;如:528a5d7524a54782cd15568d542c4b52_101_13055234567_20201219102030.log。

设备id:对于有注册用户的应用,所述设备id为用户id(如手机号等),对于无注册用户的应用,所述设备id为设备mac地址。

日志文件生成时间:格式为yyyymmddHHMMSS,所述yyyy为四位数年份,所述mm为两位数月份,所述dd为两位数日期,所述HH为两位数小时,所述MM为两位数分钟,所述SS为两位数秒钟。如:2020-12-1910:20:30时生成的日志,则表示成20201219102030。

由于本发明实施例二所介绍的装置,为实施本发明实施例一的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。

基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例三。

实施例三

本实施例提供了一种电子设备,如图4所示,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,可以实现实施例一中任一实施方式。

由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。

基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。

实施例四

本实施例提供一种计算机可读存储介质,如图5所示,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现实施例一中任一实施方式。

以下为本发明提供两个示例:

1、异常id计算示例:

如:在源码文件StringUtils.java的函数名bmpToString(),代码第76行发生Attempt to invoke virtual method'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat,int,java.io.OutputStream)'on anullobjectreference异常时,异常id的计算方法为:

md5(“StringUtils.java:bmpToString:Attempt to invoke virtual method'booleanandroid.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat,int,java.io.OutputStream)'on a null object reference”),计算出的异常id为:52a5be57a1adc1bc8524ffcbe0e66539。

异常日志文件内容信息为:

若应用版本号为101,设备id为13055234567,当前系统时间为20201219102030,则生成的异常文件名为:52a5be57a1adc1bc8524ffcbe0e66539_101_13055234567_20201219102030.log,日志文件里面的内容为:

2、异常日志内容生成规则及异常日志分析示例:

抓取到异常发生的源码位置(源码文件名,函数名,行号),异常信息描述,异常调用栈信息。

如:下面这个异常日志文件,表示异常发生位置(StringUtils.java文件,bmpToString函数,第76号),异常信息为(Attemptto invoke virtual method'booleanandroid.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat,int,java.io.OutputStream)'on anull objectreference),异常调用栈信息为整个日志文件的内容。

综上所述,本申请实施例中提供的技术方案,至少具有如下技术效果或优点:本发明提出一种基于异常id过滤掉重复异常的上报,其异常日志的文件名除了异常id外,还加入设备id和日志文件生成时间的信息,使日志文件服务器能仅根据文件名即可快速找出不同的异常文件,并快速定位相关的异常问题,能有效减轻日志文件分析工作;当文件名中加应用版本信息时,还可根据异常id与应用版本号的结合过滤机制,即可直接从日志服务器的文件名分析每个版本的异常类型数,并从日志文件内容知道具体的异常位置及原因;本发明只需要一个简单的http或ftp日志服务器即可,无需单独开发日志服务器,易于搭建实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置或系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

相关技术
  • 一种异常日志信息自动收集的方法、装置、设备和介质
  • 一种日志异常的预警方法、装置、电子设备及存储介质
技术分类

06120112722948