客户端错误日志收集方法及系统

来源:互联网 发布:淘宝运营好学吗 编辑:程序博客网 时间:2024/05/14 23:15
摘要

本发明提供了一种客户端错误日志收集方法及系统,通过将全局函数放置在访问页面的JS代码运行函数的外层,全局函数使用try catch获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window.onerror事件中;在所述window.onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器,本发明能够及时收集真实用户访问网站时其客户端的错误详细信息,以供后续的分析和排错时迅速定位错误来源,提升网站可用性。

权利要求(8)
1.一种客户端错误日志收集方法,其特征在于,包括: 定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中; 在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window, onerror事件中;在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
2.如权利要求1所述的客户端错误日志收集方法,其特征在于,将所有错误信息和对应的客户端信息回发给一错误日志收集服务器的步骤中,通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
3.如权利要求1所述的客户端错误日志收集方法,其特征在于,所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。
4.如权利要求1所述的客户端错误日志收集方法,其特征在于,所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。
5.一种客户端错误日志收集系统,其特征在于,包括: 全局函数模块,用于定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中; 定时器模块,用于在所述访问页面运行时访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window, onerror事件中; window, onerror事件模块,用于在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
6.如权利要求1所述的客户端错误日志收集系统,其特征在于,所述window, onerror事件模块通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
7.如权利要求1所述的客户端错误日志收集系统,其特征在于,所述window, onerror事件模块获取的所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消肩、O
8.如权利要求1所述的客户端错误日志收集系统,其特征在于,所述window, onerror事件模块获取的所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。
说明
客户端错误日志收集方法及系统

技术领域

[0001] 本发明涉及一种客户端错误日志收集方法及系统。

背景技术

[0002]目前,由于访问互联网用户客户端的网络环境、电脑系统、浏览器版本等十分复杂且具有独特性,而网站发布前只能通过模拟典型环境进行测试,导致一些在特性环境下出现前端错误往往无法重现。

[0003] 现有的做法是只有当大批量用户客户端报故障时才去联系客户端,而且需要在客户端提供具体信息后,才能进行错误排查。这种做法不但会对用户造成损失和不良影响,而且容易延误故障的处理的时间。

发明内容

[0004] 本发明的目的在于提供一种客户端错误日志收集方法及系统,能够能够及时收集真实用户访问网站时其客户端的错误详细信息,以供后续的分析和排错时迅速定位错误来源,提升网站可用性。

[0005] 为解决上述问题,本发明提供一种客户端错误日志收集方法,包括:

[0006] 定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;

[0007] 在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window, onerror事件中;

[0008] 在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。

[0009] 进一步的,在上述方法中,将所有错误信息和对应的客户端信息回发给一错误日志收集服务器的步骤中,通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。

[0010] 进一步的,在上述方法中,所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。

[0011] 进一步的,在上述方法中,所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。

[0012] 根据本发明的另一面,提供一种客户端错误日志收集系统,包括:

[0013] 全局函数模块,用于定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;

[0014] 定时器模块,用于在所述访问页面运行时访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window, onerror事件中;

[0015] window, onerror事件模块,用于在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。

[0016] 进一步的,在上述系统中,所述window, onerror事件模块通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。

[0017] 进一步的,在上述系统中,所述window, onerror事件模块获取的所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。

[0018] 进一步的,在上述系统中,所述window, onerror事件模块获取的所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。

[0019] 与现有技术相比,本发明通过定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window,onerror事件中;在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器,能够及时收集真实用户访问网站时其客户端的错误详细信息,以供后续的分析和排错时迅速定位错误来源,提升网站可用性。

附图说明

[0020] 图1是本发明一实施例的客户端错误日志收集方法的流程图;

[0021]图2是本发明一实施例的客户端错误日志收集系统的模块示意图。

具体实施方式

[0022] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

[0023] 实施例一

[0024] 如图1所示,本发明提供一种客户端错误日志收集方法,包括:

[0025] 步骤SI,定义一个全局函数run,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量globalError 中;

[0026] 步骤SI的具体实现程序可如下:

[0027]

Figure CN104182327AD00051

[0029] 步骤S2,在所述访问页面运行时用定时器去访问所述全局变量globalError, —旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window, onerror事件中,这样可以解决跨域的script error的问题;

[0030] 步骤S2的具体实现程序可如下:

[0031]

Figure CN104182327AD00061

[0033] 步骤S3,在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。

[0034] 本发明一实施例中,步骤S3中,通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器,错误日志收集服务器接收到错误信息和对应的客户端信息可以进行实时数据存储、分类汇总。

[0035] 可选的,所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。

[0036] 可选的,所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。

[0037] 步骤S2的具体实现程序可如下:

[0038]

Figure CN104182327AD00071

[0040] try catch能够捕捉到顺序执行代码的错误,无法捕获延迟执行的代码,而且此错误不会继续传播,同时如果要收集到JS文件中的错误,需要在每个特定的函数外层增加try catch ;而window, onerror事件可以收集到所有类型的错误,但是如果页面引用的JS文件与页面出现跨域情况时,所有的错误信息为“script error”,导致无法进行错误跟踪排查。所以,本实施例采用javascript语言中的trycatch和window, onerror结合的方法进行客户端错误信息的实时跟踪和获取,以克服单独使用try catch或window, onerror方法中存在的问题。

[0041] 根据所述错误信息和对应的客户端信息能在第一时间通过日志分析出用户特定的网络环境、电脑系统、浏览器等信息,进行错误的重现和及时排查修复,排查特定错误时根据错误日志收集服务器的记录进行筛选和排查,可以准确迅速的定位到出错的特定环境和错误原因,实时保证网站的可用性。

[0042] 实施例二

[0043] 如图2所示,本发明还提供另一种客户端错误日志收集系统,包括全局函数模块

1、定时器模块2和window, onerror事件模块3。

[0044] 全局函数模块1,用于定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中。

[0045] 定时器模块2,用于在所述访问页面运行时访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window, onerror事件中。

[0046] window, onerror事件模块3,用于在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。

[0047] 本发明一实施例中,所述window, onerror事件模块通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。

[0048] 可选的,所述window, onerror事件模块获取的所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。

[0049] 可选的,所述window, onerror事件模块获取的所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。

[0050] 实施例二的其它详细内容具体可参见实施例一的相应部分,在此不再赘述。

[0051] 综上所述,本发明通过定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window, onerror事件中;在所述window, onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器,能够及时收集真实用户访问网站时其客户端的错误详细信息,以供后续的分析和排错时迅速定位错误来源,提升网站可用性。

[0052] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

[0053] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

[0054] 显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。


0 0