日志采集方法、装置、系统、电子设备及可读介质与流程

文档序号:29072080发布日期:2022-03-01 21:38阅读:132来源:国知局
日志采集方法、装置、系统、电子设备及可读介质与流程

1.本发明实施例涉及监控技术领域,特别是涉及一种日志采集方法、一种日志采集装置、一种日志采集系统、一种电子设备以及一种计算机可读介质。


背景技术:

2.小程序(mini program):是一种不需要下载安装即可使用的应用程序,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用程序。也正是如此,小程序目前已经被广泛使用,例如目前存在的小程序有微信小程序、百度智能小程序、支付宝小程序、淘宝轻店铺、手q小程序、字节小程序、京东小程序、360小程序等等,这些小程序都可以投放到小程序平台(第三方平台)中运行,为用户提供各式各样的服务。
3.随着业务发展的需要,会在多个的第三方平台都有对应的投放,在开发迭代过程中,由于平台、系统、机型和版本的兼容等问题,应用程序出现线上问题时排查起来相对困难。在实际中,可以通过采集日志信息进行分析得到解答,然而由于针对第三方平台的应用程序的日志信息的采集,缺乏统一的采集标准,因此需要针对不同采集标准制定对应的开发者工具包,导致开发成本高。


技术实现要素:

4.本发明实施例是提供一种日志采集方法、装置、系统、电子设备以及计算机可读存储介质,通过制定了适用各个第三方平台的应用程序的开发者工具包,解决了由于缺乏统一的采集标准,需要针对不同采集标准制定对应的开发者工具包,导致开发成本高的问题。
5.本发明实施例公开了一种日志采集方法,应用程序运行在第三方平台中,所述应用程序中包括开发者工具包,所述开发者工具包针对各个日志类型建立了对应的采集标准,所述方法包括:
6.确定所述应用程序待采集的日志信息的日志类型;
7.基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息。
8.可选地,所述应用程序包括开发者工具包,所述基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息,包括:
9.当所述日志类型为通用日志时,确定所述应用程序所在的第三方平台;
10.从所述开发者工具包中确定所述第三方平台对应的应用程序接口;
11.调用所述应用程序接口采集所述应用程序的日志信息。
12.可选地,所述确定所述应用程序所在的第三方平台,包括:
13.读取所述应用程序的模块宏;
14.根据所述模块宏确定所述应用程序所在的第三方平台,所述第三方平台具有对应的平台标识。
15.可选地,所述从所述开发者工具包中确定所述第三方平台对应的应用程序接口,
包括:
16.将所述平台标识保存到所述应用程序的上下文变量中;
17.从所述上下文变量中提取所述平台标识;
18.从所述开发者工具包中获取所述平台标识对应的应用程序接口。
19.可选地,所述开发者工具包中包括控制台异常函数,所述基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息,包括:
20.当所述日志类型为异常日志时,拦截所述控制台异常函数采集的异常信息;
21.将所述异常信息作为所述应用程序的日志信息。
22.可选地,所述将所述异常信息作为所述应用程序的日志信息,包括:
23.将所述异常信息按照预设的正则匹配规则进行格式化处理;
24.将格式化处理后的所述异常信息作为所述应用程序的日志信息。
25.可选地,所述开发者工具包中针对指定方法函数中埋入探针程序,所述基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息,包括:
26.当所述日志类型为性能日志时,通过所述探针程序采集所述指定方法函数的生命周期;
27.根据所述生命周期生成所述应用程序的性能信息;
28.将所述性能信息作为所述应用程序的日志信息。
29.可选地,所述根据所述生命周期生成所述应用程序的性能信息,包括:
30.计算所述指定方法函数的生命周期之间的差值;
31.将所述差值为所述应用程序的性能信息。
32.可选地,所述方法还包括:
33.将所述日志信息上报至日志分析处理平台。
34.本发明实施例还公开了一种日志采集装置,应用程序运行在第三方平台中,所述应用程序中包括开发者工具包,所述开发者工具包针对各个日志类型建立了对应的采集标准,所述方法包括:
35.日志类型确定模块,用于确定所述应用程序待采集的日志信息的日志类型;
36.日志采集模块,用于基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息。
37.可选地,所述应用程序包括开发者工具包,所述日志采集模块,用于当所述日志类型为通用日志时,确定所述应用程序所在的第三方平台;从所述开发者工具包中确定所述第三方平台对应的应用程序接口;调用所述应用程序接口采集所述应用程序的日志信息。
38.可选地,所述日志采集模块,用于读取所述应用程序的模块宏;根据所述模块宏确定所述应用程序所在的第三方平台,所述第三方平台具有对应的平台标识。
39.可选地,所述日志采集模块,用于将所述平台标识保存到所述应用程序的上下文变量中;从所述上下文变量中提取所述平台标识;从所述开发者工具包中获取所述平台标识对应的应用程序接口。
40.可选地,所述开发者工具包中包括控制台异常函数,所述日志采集模块,用于当所
述日志类型为异常日志时,拦截所述控制台异常函数采集的异常信息;将所述异常信息作为所述应用程序的日志信息。
41.可选地,所述日志采集模块,用于将所述异常信息按照预设的正则匹配规则进行格式化处理;将格式化处理后的所述异常信息作为所述应用程序的日志信息。
42.可选地,所述开发者工具包中针对指定方法函数中埋入探针程序,所述日志采集模块,用于当所述日志类型为性能日志时,通过所述探针程序采集所述指定方法函数的生命周期;根据所述生命周期生成所述应用程序的性能信息;将所述性能信息作为所述应用程序的日志信息。
43.可选地,所述日志采集模块,用于计算所述指定方法函数的生命周期之间的差值;将所述差值为所述应用程序的性能信息。
44.可选地,所述装置还包括:日志信息上报模块,用于将所述日志信息上报至日志分析处理平台。
45.本发明实施例还公开了一种日志采集系统,包括多个应用程序和日志分析处理平台,其中,所述应用程序运行在第三方平台中,所述应用程序中包括开发者工具包,所述开发者工具包针对各个日志类型建立了对应的采集标准:
46.所述应用程序,用于确定所述应用程序待采集的日志信息的日志类型,并基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息;
47.所述日志分析处理平台,用于对所述日志信息进行分析后以可视化方式进行展示。
48.本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
49.所述存储器,用于存放计算机程序;
50.所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的日志采集方法。
51.本发明实施例还公开了一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的日志采集方法。
52.本发明实施例还公开了一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行如本发明实施例所述的的日志采集展示方法。
53.本发明实施例包括以下优点:
54.在本发明实施例中,应用程序中包括开发者工具包,并且开发者工具包针对各个日志类型建立了对应的采集标准,在采集应用程序的日志信息时,确定应用程序待采集的日志信息的日志类型,以基于开发者工具包按照日志类型对应的采集标准采集应用程序的日志信息。本发明实施例预先通过分析第三方平台的应用程序框架,以及各个日志类型的日志信息的特点,在开发者工具包中制定适用各第三方平台的各个日志类型的采集标准,进而可以通过采集标准采集应用程序的日志信息,由于通过开发者工具包统一了应用程序的日志信息的采集标准,抹平了各个第三方平台间的差异,无需针对各个第三方平台分别
设置对应的开发者工具包,降低了开发成本。
附图说明
55.图1是本发明实施例中提供的一种日志采集方法的步骤流程图;
56.图2是本发明实施例中提供的一种采集通用日志的步骤流程图;
57.图3是本发明实施例中提供的一种采集异常日志的步骤流程图;
58.图4是本发明实施例中提供的一种采集性能日志的步骤流程图;
59.图5是本发明实施例中提供的一种性能信息的计算示意图;
60.图6是本发明实施例中提供的一种应用程序页面加载的瀑布图;
61.图7是本发明实施例中提供的一种日志采集装置的结构框图;
62.图8是本发明实施例中提供的一种日志采集系统的结构框图。
具体实施方式
63.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
64.终端设备上可以运行应用程序,例如生活类应用程序、音频应用程序以及游戏应用程序等。其中,生活类应用程序中可以提供车辆买房功能、房屋买卖功能、家政服务功能、休闲动能等等。
65.随着业务发展的需要,会在多个的第三方平台都有对应的投放,例如生活类应用程序可以分别投放到微信、百度、支付宝、字节、360等第三方平台,其中,在各个第三方平台的应用程序可以分别称为微信小程序、百度智能小程序、支付宝小程序、字节小程序、360小程序等。在开发迭代过程中,由于平台、系统、机型和版本的兼容等问题,应用程序出现线上问题时排查起来相对困难。例如,为什么应用程序的启动速度慢?线上白屏加载不出来数据到底是怎么回事?线上代码质量如何,是否有bug?线上出现问题,如何快速发现并解决?用户到底操作了什么?投放了这么多应用程序,在各个第三方平台效果究竟怎么样?当前的应用程序是否有可优化空间?
66.上述的问题都可以通过日志信息分析得到解答,各个第三方平台的后台也可以采集一部分日志信息,比如微信的后台有采集js异常日志、接口异常日志,但接口异常日志只有状态码层面的信息,脚本异常日志中缺乏当前异常发生时的页面路径信息、系统信息、网络状态、用户行为轨迹等信息的记录,因此排查起来还是相对困难的。此外,对于应用程序的性能信息的采集,各个第三方平台之间也没有一个统一的采集标准。基于此,本发明实施例提出了一种兼容多个第三方平台的应用程序的日志采集方案。以下对于本发明实施例进行详细介绍。
67.参照图1,示出了本发明实施例中提供的一种日志采集方法的步骤流程图,应用程序运行在第三方平台中,所述应用程序中包括开发者工具包,所述开发者工具包针对各个日志类型建立了对应的采集标准,具体可以包括如下步骤:
68.步骤102、确定所述应用程序待采集的日志信息的日志类型。
69.其中,应用程序可以是运行在多个第三方平台的小程序;日志类型至少可以包括通用日志、异常日志、性能日志等等。示例性地,第三方平台可以包括百度、头条、微信,则应
用程序可以是运行在百度的小程序,运行在头条的小程序,运行在微信的小程序,举例来说,生活类小程序可以投放到百度、头条、微信这些第三方平台,则该生活类小程序可以是运行在百度的生活类小程序,运行在头条的生活类小程序,运行在微信的生活类小程序。通用日志的日志信息可以包括系统信息、用户信息、网络状态、场景值等等,异常日志的日志信息可以包括js错误、接口异常、资源下载异常等等,性能日志的日志信息可以包括首屏时间、页面加载耗时、页面显示耗时、页面渲染耗时等等。
70.可选地,应用程序除了可以是分别运行在多个第三方平台的小程序之外,还可以是分别运行在多个第三方平台中的终端软件,其中,第三方平台可以是各种类型的终端设备,例如是不同型号的终端设备或者不同类型的终端设备。具体地,不同型号的终端设备可以是型号a的智能手机、型号b的智能手机等等,不同类型的终端设备可以是智能手机,个人计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理、智能穿戴设备等等,本发明实施例对此不做限定。
71.举例来说,应用程序可以是运行在型号a的智能手机中的终端软件、运行在型号b的智能手机中的终端软件,或者,运行在智能手机中的终端软件、运行在个人计算机中的终端软件、运行在平板设备中的终端软件、运行在智能穿戴设备中的终端软件等等。
72.需要说明的是,本发明实施例所涉及的用户信息等其他隐私信息,均为经用户授权或者经过各方授权的信息。
73.其中,开发者工具包是指的sdk(software development kit),是辅助开发应用程序的相关文档、范例和工具的集合。示例性地,开发者工具包中可以包含api(aplication programing interface,应用程序接口)、方法函数等等,并且,开发者工具包针对各个日志类型建立了对应的采集标准。
74.步骤104、基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息。
75.在具体实现中,开发人员通过分析各个第三方平台的应用程序框架,针对各个日志类型制定能够适用各个第三方平台的应用程序的统一日志信息的采集标准,通过统一采集标准,使得可以无需分别针对第三方平台开发开发者工具包。
76.在本发明实施例中,在日志采集时,确定待采集的日志的日志类型,例如是通用日志、异常日志或者性能日志,进而通过开发者工具包可以基于日志类型对应的采集标准,来采集应用程序的日志信息。
77.在上述日志采集方法中,应用程序中包括开发者工具包,开发者工具包针对各个日志类型建立了对应的采集标准,在采集应用程序的日志信息时,确定应用程序待采集的日志信息的日志类型,以基于开发者工具包按照日志类型对应的采集标准采集应用程序的日志信息。本发明实施例预先通过分析第三方平台的应用程序框架,以及各个日志类型的日志信息的特点,在开发者工具包中制定适用各第三方平台的各个日志类型的采集标准,进而可以通过采集标准采集应用程序的日志信息,由于通过开发者工具包统一了应用程序的日志信息的采集标准,抹平了各个第三方平台间的差异,无需针对各个第三方平台分别设置对应的开发者工具包,降低了开发成本。
78.在上述实施例的基础上,提出了上述实施例的变型实施例,在此需要说明的是,为了使描述简要,在变型实施例中仅描述与上述实施例的不同之处。
79.在一示例性实施例中,参照图2,所述步骤104、基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息,可以包括如下步骤:
80.步骤202、当所述日志类型为通用日志时,确定所述应用程序所在的第三方平台。
81.步骤204、从所述开发者工具包中确定所述第三方平台对应的应用程序接口。
82.步骤206、调用所述应用程序接口采集所述应用程序的日志信息。
83.具体地,基于应用程序接口可以采集为通用日志的日志信息,在应用程序的开发者工具包中设置了分别针对各个第三方平台的应用程序的应用程序接口,例如,针对微信应用程序的应用程序接口,针对百度应用程序的应用程序接口,针对头条应用程序的应用程序接口等等,通过调用各个第三方平台的应用程序对应的应用程序接口,能够从第三方平台中运行的应用程序中获取到通用日志的日志信息。
84.在本发明实施例中,在确定日志类型为通用日志,并确定应用程序所在的第三方平台后,假设是微信应用程序的应用程序接口,则可以从开发者工具包调用微信应用程序的应用程序接口,来采集为通用日志的日志信息。
85.在上述示例性实施例中,在应用程序的开发者工具包中预先设置分别针对各个第三方平台的应用程序的应用程序接口,当待采集的日志信息的日志类型为通用日志时,确定应用程序所在的第三方平台,从开发者工具包中确定该第三方平台的应用程序的应用程序接口,然后可以调用应用程序接口采集为通用日志的日志信息,因此开发人员开发开发者工具包时,无需分别针对各个第三方平台的应用程序分别开发,而是仅需要在开发者工具包中设置对应的应用程序接口,即可实现为通用日志的日志信息的采集,降低了开发成本。
86.在一示例性实施例中,所述步骤202、确定所述应用程序所在的第三方平台,可以包括如下步骤:
87.读取所述应用程序的模块宏;
88.根据所述模块宏确定所述应用程序所在的第三方平台,所述第三方平台具有对应的平台标识。
89.在具体实现中,通过相关的应用程序接口(api)可以获取到用户信息、系统信息、环境信息等通用日志的日志信息,例如:wx.getuserinfo()获取用户信息,wx.getsysteminfosync()获取系统信息,wx.getnetworktype()获取当前网络状态;app.onlaunch()获取场景信息。
90.可见,针对各个第三方平台的应用程序用于采集为通用日志的日志信息的应用程序接口基本一致,主要区别在于模块宏(const)的定义不同,其中,模块宏在应用程序被投放到第三方平台之前设置,例如,微信小程序的模块宏可以设置为wx,百度小程序的模块宏可以设置为swan,头条小程序的模块宏可以设置为tt,基于这个设置,本发明实施例的开发者工具包在第三方平台初始化的时候,判断模块宏是否存在,若存在则可以基于模块宏来判断应用程序所在的第三方平台,进而得到应用程序的平台标识。其中,平台标识用于唯一标识处第三方平台的编号或者名称等等,可选地,平台标识可以与模块宏相同,例如可以是wx、swan、tt等等,本发明实施例对此无需加以限制。
91.在上述示例性实施例中,通过读取应用程序的模块宏来确定应用程序所在的第三
方平台,进而可以根据第三方平台的平台标识,从开发者工具中调用对应的应用程序接口,来采集为通用日志的日志信息,第三方平台的确定方式简单且准确,有利于日志采集正常进行。
92.在一示例性实施例中,所述步骤204、从所述开发者工具包中确定所述第三方平台对应的应用程序接口,可以包括如下步骤:
93.将所述平台标识保存到所述应用程序的上下文变量中;
94.从所述上下文变量中提取所述平台标识;
95.从所述开发者工具包中获取所述平台标识对应的应用程序接口。
96.其中,上下文变量(context)是应用程序为context实例中的全局变量,通过赋予上下文变量对应的值,上下文变量就可以呈现对应的值或者状态。
97.在本发明实施例中,在开发者工具包初始化的时候,通过读取模块宏获取应用程序所在的第三方平台的平台标识,并将平台标识存储应用程序的在上下文变量中,在需要采集为通用日志的日志信息时,通过上下文变量中的平台标识,可以从开发者工具包中调用对应的应用程序接口。
98.示例性地,假设通过读取模块宏获取应用程序的第三方平台为微信,则平台标识为wx,将平台标识wx存储应用程序的在上下文变量中,在需要采集为通用日志的日志信息时,通过上下文变量中的平台标识wx,可以从开发者工具包中调用微信对应的应用程序接口。
99.在上述示例性实施例中,将平台标识保存到应用程序的上下文变量中,在需要采集为通用日志的日志信息时,从上下文变量中提取平台标识,然后就可以从开发者工具包中调用平台标识对应的应用程序接口进行日志采集,提高了应用程序接口的调用效率,进而提高了日志信息的采集效率。
100.在一示例性实施例中,所述开发者工具包中包括控制台异常函数,参照图3,所述步骤104、基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息,可以包括如下步骤:
101.步骤302、当所述日志类型为异常日志时,拦截所述控制台异常函数采集的异常信息;
102.步骤304、将所述异常信息作为所述应用程序的日志信息。
103.在具体应用中,应用程序在第三方平台的运行过程中会有时发生一些异常事件,通常是由硬件问题或者程序设计问题所导致的,通过对这些异常事件进行监控并进行日志采集,从而可以基于日志相应处理异常事件。在具体实现中,对应用程序异常事件的异常堆栈的跟踪,通过try...catch语句可以从异常堆栈中捕获异常信息,并通过控制台异常函数(console.error)输出异常信息,从中可以发现,当应用程序出现异常的时候,开发者工具控制台可以通过控制台异常函数将异常信息输出。基于上述发现,本发明实施例可以通过开发者工具包拦截控制台异常函数捕获的异常信息作为日志信息。
104.在本发明实施例中,在确定日志类型为异常日志,拦截控制台异常函数捕获的异常信息,并将该异常信息作为异常日志的日志信息。作为一个示例,通过拦截控制台异常函数可采集到的异常信息包括下面几种:脚本异常信息,api调用异常信息,promise异常信息,自定义上报异常信息等等。
105.在上述示例性实施例中,当日志类型为异常日志时,通过开发者工具包拦截控制台异常函数采集的异常信息,并将异常信息作为应用程序的日志信息,类似地,开发人员开发开发者工具包时,无需分别针对各个第三方平台分别,而是将开发者工具包设置为通过拦截控制台异常函数采集的异常信息即可实现异常日志的采集,降低了开发成本。
106.在一示例性实施例中,所述步骤304、将所述异常信息作为所述应用程序的日志信息,可以包括如下步骤:
107.将所述异常信息按照预设的正则匹配规则进行格式化处理;
108.将格式化处理后的所述异常信息作为所述应用程序的日志信息。
109.在具体实现中,但是由于第三方平台的应用程序之间存在差异,因此拦截的异常信息会存在格式不统一的情况,针对上述问题,本发明实施例在应用程序中设置预设的正则匹配规则,在通过开发者工具包拦截控制台异常函数捕获的异常信息后,可以通过正则匹配规则对异常信息进行格式化处理,使得格式化处理后的异常信息形成格式统一的异常日志的日志信息。
110.作为一个具体示例,正则匹配规则可以为:const error_types_reg=/(((eval|reference|range|internal|type|syntax)error)|promise)/,对于拦截控制台异常函数捕获的异常信息,格式化处理的异常信息(包括堆栈信息和错误内容)可以作为异常日志的日志信息,具体可以包含错误类型、错误内容、堆栈信息等信息。
111.在上述示例性实施例中,在通过开发者工具包拦截到控制台异常函数的异常信息后,通过预设的正则匹配规则对异常信息进行格式化处理,得到格式不统一的异常日志的日志信息,利用于后续进一步的分析处理。
112.在一示例性实施例中,所述开发者工具包中针对指定方法函数中埋入探针程序,参照图4,所述步骤104、基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息,可以包括如下步骤:
113.步骤402、当所述日志类型为性能日志时,通过所述探针程序采集所述指定方法函数的生命周期;
114.步骤404、根据所述生命周期生成所述应用程序的性能信息;
115.步骤406、将所述性能信息作为所述应用程序的日志信息。
116.其中,探针程序是指在保证原有逻辑完整性的基础上,在开发者工具包中埋入的一些代码段,其中,程序探针是用于进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用等等。
117.其中,指定方法函数为生命周期方法函数,以小程序为例,可以包括应用程序级别(app级别)和页面级别(page级别)相应的onlaunch,onshow,onhide,onready等生命周期方法函数,具体地:onlaunch:监听小程序初始化,当小程序初始化完成时,会触发onlaunch(全局只触发一次)。onshow:监听小程序显示,当小程序启动,或从后台进入前台显示,会触发onshow。onhide:监听小程序隐藏,当小程序从前台进入后台,会触发onhide。onready:首次显示小程序的页面,页面初次渲染完成,会触发onready,渲染页面元素和样式,一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
118.在具体应用过程中,开发人员对各个第三方平台的应用程序生命周期相关的api(即生命周期方法函数)进行比对,发现各个第三方平台的应用程序框架(小程序框架)的实
现基本一致,例如onlaunch,onshow,onhide,onready等生命周期方法函数都是相同的,因此,若在开发者工具包中针对应用程序的生命周期方法函数的处埋入程序探针,就可以通过程序探针拦截小程序app、page相应的生命周期(完成时间),进而就可以基于采集的各个生命周期方法函数的生命周期方法函数,来计算应用程序的性能信息,并且,由于第三方平台的应用程序框架基本一致,故而无需特意针对每个第三方平台分别开发对应的开发者工具包来采集性能日志的日志信息,降低了开发成本。
119.在本发明实施例中,在确定日志类型为性能日志,当应用程序在运行到生命周期方法函数时,通过开发者工具包中的程序探针获取到生命周期方法函数的生命周期,进而可以基于生命周期计算性能信息,并将该性能信息作为性能日志的日志信息。
120.在上述示例性实施例中,当日志类型为性能日志时,通过在开发者工具包中埋入的程序探针,来采集应用程序的生命周期方法函数的生命周期,进而可以基于生命周期计算应用程序的性能信息,并将性能信息作为应用程序的日志信息,类似地,开发人员开发开发者工具包时,无需分别针对各个第三方平台分别开发,而是在开发者工具包中埋入针对应用程序的生命周期方法函数探针程序,即可实现性能日志的采集,降低了开发成本。
121.在一示例性实施例中,所述步骤404、根据所述生命周期生成所述应用程序的性能信息,可以包括如下步骤:
122.计算所述指定方法函数的生命周期之间的差值;
123.将所述差值为所述应用程序的性能信息。
124.具体地,在得到生命周期方法函数的生命周期后,可以计算生命周期方法函数的生命周期之间的差值作为应用程序的性能信息。
125.具体地,性能信息可以包括应用级别性能和页面级别性,其中,应用级别性能可以包括首屏时间,页面级别性能可以包括页面加载耗时、页面显示耗时、页面渲染耗时。作为一个具体示例,参照图5,首屏时间可以通过计算应用程序的开发工具包初始化(init)时间与app.onready的生命周期之间的差值获得,页面加载耗时可以通过计算page.ohshow的生命周期与page.onload的生命周期之间的差值,或者通过计算page.onload的生命周期与page.ohhide的生命周期之间的差值获得获得,页面显示耗时可以通过计算page.onload的生命周期与page.ohshow的生命周期之间的差值获得,页面渲染耗时可以通过计算page.ohshow的生命周期与page.ohready的生命周期之间的差值获得。当然,其他的性能信息也可以根据实际需要在生命周期方法函数中埋入对应的程序探针来获取生命周期并计算获得,本发明实施例对此无需加以限制。
126.在上述示例性实施例中,通过计算生命周期方法函数的生命周期之间的差值来获取应用程序的性能信息,无需进行复杂的运算,简单且易于实现。
127.在一示例性实施例中,所述方法还可以包括如下步骤:
128.将所述日志信息上报至日志分析处理平台。
129.具体地,在不同的第三方平台中的应用程序,可以分别将线上的应用程序在运行时采集的各种通用日志、异常日志和性能日志的日志信息上报至日志分析处理平台。作为一个具体示例,参照图6,在得到性能日志的日志信息后,可以基于性能日志的日志数据形成性能信息的瀑布图,以更好地为开发人员或者其他相关人员展示出应用程序的性能状态。
130.在上述示例性实施例中,通过将应用程序的日志信息上报至日志分析处理平台,使得开发人员或者其他相关人员能够了解到应用程序的运行状态,进而针对性的对症下药,优化应用程序以更好地用户提供服务。
131.综上可知,开发人员通过预先分析第三方平台的应用程序框架,针对各个第三方平台的应用程序,通过开发者工具包制定了各个日志类型(例如针对通用日志、异常日志、性能日志等)对应采集标准来采集日志信息,进而可以通过采集标准采集应用程序的日志信息,由于通过开发者工具包统一了应用程序的日志信息的采集标准,抹平了各个第三方平台间的差异,无需针对各个第三方平台分别设置对应的开发者工具包,极大降低了开发成本。
132.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
133.参照图7,示出了本发明实施例中提供的一种日志采集装置的结构框图,应用程序运行在第三方平台中,所述应用程序中包括开发者工具包,所述开发者工具包针对各个日志类型建立了对应的采集标准,具体可以包括如下模块:
134.日志类型确定模块702,用于确定所述应用程序待采集的日志信息的日志类型;
135.日志采集模块704,用于基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息。
136.在一示例性实施例中,所述日志采集模块704,用于当所述日志类型为通用日志时,确定所述应用程序所在的第三方平台;从所述开发者工具包中确定所述第三方平台对应的应用程序接口;调用所述应用程序接口采集所述应用程序的日志信息。
137.在一示例性实施例中,所述日志采集模块704,用于读取所述应用程序的模块宏;根据所述模块宏确定所述应用程序所在的第三方平台,所述第三方平台具有对应的平台标识。
138.在一示例性实施例中,所述日志采集模块704,用于将所述平台标识保存到所述应用程序的上下文变量中;从所述上下文变量中提取所述平台标识;从所述开发者工具包中获取所述平台标识对应的应用程序接口。
139.在一示例性实施例中,所述开发者工具包中包括控制台异常函数,所述日志采集模块704,用于当所述日志类型为异常日志时,拦截所述控制台异常函数采集的异常信息;将所述异常信息作为所述应用程序的日志信息。
140.在一示例性实施例中,所述日志采集模块704,用于将所述异常信息按照预设的正则匹配规则进行格式化处理;将格式化处理后的所述异常信息作为所述应用程序的日志信息。
141.在一示例性实施例中,所述开发者工具包中针对指定方法函数中埋入探针程序,所述日志采集模块704,用于当所述日志类型为性能日志时,通过所述探针程序采集所述指定方法函数的生命周期;根据所述生命周期生成所述应用程序的性能信息;将所述性能信息作为所述应用程序的日志信息。
142.在一示例性实施例中,所述日志采集模块704,用于计算所述指定方法函数的生命周期之间的差值;将所述差值为所述应用程序的性能信息。
143.在一示例性实施例中,所述装置还包括:日志信息上报模块,用于将所述日志信息上报至日志分析处理平台。
144.综上,应用程序中包括开发者工具包,开发者工具包针对各个日志类型建立了对应的采集标准,在采集应用程序的日志信息时,确定应用程序待采集的日志信息的日志类型,以基于开发者工具包按照日志类型对应的采集标准采集应用程序的日志信息。本发明实施例预先通过分析第三方平台的应用程序框架,以及各个日志类型的日志信息的特点,在开发者工具包中制定适用各第三方平台的各个日志类型的采集标准,进而可以通过采集标准采集应用程序的日志信息,由于通过开发者工具包统一了应用程序的日志信息的采集标准,抹平了各个第三方平台间的差异,无需针对各个第三方平台分别设置对应的开发者工具包,降低了开发成本。
145.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
146.参照图8,示出了本发明实施例中提供的一种日志采集系统的结构框图,包括多个应用程序和日志分析处理平台,其中,所述应用程序运行在第三方平台中,所述应用程序中包括开发者工具包,所述开发者工具包针对各个日志类型建立了对应的采集标准,具体地:
147.所述应用程序802,用于确定所述应用程序待采集的日志信息的日志类型,并基于所述开发者工具包,按照所述日志类型对应的采集标准,采集在所述第三方平台运行的所述应用程序的日志信息;
148.所述日志分析处理平台804,用于对所述日志信息进行分析后以可视化方式进行展示。
149.其中,针对多个应用程序的开发者工具包(sdk)是相同的。
150.在本发明实施例中的日志采集系统中,对于投放到各个第三方平台的应用程序,可以在第三方平台中运行的过程中,确定应用程序待采集的日志信息的日志类型,例如通用日志、异常日志、性能日志等等,基于通过开发者工具包并按照日志类型对应的采集标准,来采集所述应用程序的日志信息,随后,可以将日志信息上报至日志分析处理平台,日志分析处理平台通过对日志信息进行分析,可以形成日志分析图(例如通用日志图、异常日志图和性能日志图等等),其中,日志分析图可以将日志信息,采用几何图形、事物形象和地图等绘制的各种图形,使得日志分析图可以使日志信息简单化、通俗化、形象化,使人一目了然,便于理解和比较,并在日志分析处理平台的页面中以可视化方式展示给开发人员,开发人员则可以直观地通过分析日志分析图,确认应用程序可优化的部分。
151.对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
152.优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述日志采集方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
153.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述日志采集方法实施例的各个过程,且能
达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
154.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
155.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
156.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
157.本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
158.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
159.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
160.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
161.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
162.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
163.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1