CN104182327A - 客户端错误日志收集方法及系统 - Google Patents

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

Info

Publication number
CN104182327A
CN104182327A CN201310196076.1A CN201310196076A CN104182327A CN 104182327 A CN104182327 A CN 104182327A CN 201310196076 A CN201310196076 A CN 201310196076A CN 104182327 A CN104182327 A CN 104182327A
Authority
CN
China
Prior art keywords
client
error
mistake
code
overall situation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310196076.1A
Other languages
English (en)
Other versions
CN104182327B (zh
Inventor
储诚栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Ctrip Business Co Ltd
Original Assignee
Ctrip Computer Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ctrip Computer Technology Shanghai Co Ltd filed Critical Ctrip Computer Technology Shanghai Co Ltd
Priority to CN201310196076.1A priority Critical patent/CN104182327B/zh
Publication of CN104182327A publication Critical patent/CN104182327A/zh
Application granted granted Critical
Publication of CN104182327B publication Critical patent/CN104182327B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

客户端错误日志收集方法及系统
技术领域
本发明涉及一种客户端错误日志收集方法及系统。
背景技术
目前,由于访问互联网用户客户端的网络环境、电脑系统、浏览器版本等十分复杂且具有独特性,而网站发布前只能通过模拟典型环境进行测试,导致一些在特性环境下出现前端错误往往无法重现。
现有的做法是只有当大批量用户客户端报故障时才去联系客户端,而且需要在客户端提供具体信息后,才能进行错误排查。这种做法不但会对用户造成损失和不良影响,而且容易延误故障的处理的时间。
发明内容
本发明的目的在于提供一种客户端错误日志收集方法及系统,能够能够及时收集真实用户访问网站时其客户端的错误详细信息,以供后续的分析和排错时迅速定位错误来源,提升网站可用性。
为解决上述问题,本发明提供一种客户端错误日志收集方法,包括:
定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;
在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window.onerror事件中;
在所述window.onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
进一步的,在上述方法中,将所有错误信息和对应的客户端信息回发给一错误日志收集服务器的步骤中,通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
进一步的,在上述方法中,所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。
进一步的,在上述方法中,所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。
根据本发明的另一面,提供一种客户端错误日志收集系统,包括:
全局函数模块,用于定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;
定时器模块,用于在所述访问页面运行时访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window.onerror事件中;
window.onerror事件模块,用于在所述window.onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
进一步的,在上述系统中,所述window.onerror事件模块通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
进一步的,在上述系统中,所述window.onerror事件模块获取的所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。
进一步的,在上述系统中,所述window.onerror事件模块获取的所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。
与现有技术相比,本发明通过定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window.onerror事件中;在所述window.onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器,能够及时收集真实用户访问网站时其客户端的错误详细信息,以供后续的分析和排错时迅速定位错误来源,提升网站可用性。
附图说明
图1是本发明一实施例的客户端错误日志收集方法的流程图;
图2是本发明一实施例的客户端错误日志收集系统的模块示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
如图1所示,本发明提供一种客户端错误日志收集方法,包括:
步骤S1,定义一个全局函数run,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量globalError中;
步骤S1的具体实现程序可如下:
步骤S2,在所述访问页面运行时用定时器去访问所述全局变量globalError,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window.onerror事件中,这样可以解决跨域的script error的问题;
步骤S2的具体实现程序可如下:
步骤S3,在所述window.onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
本发明一实施例中,步骤S3中,通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器,错误日志收集服务器接收到错误信息和对应的客户端信息可以进行实时数据存储、分类汇总。
可选的,所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。
可选的,所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。
步骤S2的具体实现程序可如下:
try catch能够捕捉到顺序执行代码的错误,无法捕获延迟执行的代码,而且此错误不会继续传播,同时如果要收集到JS文件中的错误,需要在每个特定的函数外层增加try catch;而window.onerror事件可以收集到所有类型的错误,但是如果页面引用的JS文件与页面出现跨域情况时,所有的错误信息为“scripterror”,导致无法进行错误跟踪排查。所以,本实施例采用javascript语言中的trycatch和window.onerror结合的方法进行客户端错误信息的实时跟踪和获取,以克服单独使用try catch或window.onerror方法中存在的问题。
根据所述错误信息和对应的客户端信息能在第一时间通过日志分析出用户特定的网络环境、电脑系统、浏览器等信息,进行错误的重现和及时排查修复,排查特定错误时根据错误日志收集服务器的记录进行筛选和排查,可以准确迅速的定位到出错的特定环境和错误原因,实时保证网站的可用性。
实施例二
如图2所示,本发明还提供另一种客户端错误日志收集系统,包括全局函数模块1、定时器模块2和window.onerror事件模块3。
全局函数模块1,用于定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中。
定时器模块2,用于在所述访问页面运行时访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window.onerror事件中。
window.onerror事件模块3,用于在所述window.onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
本发明一实施例中,所述window.onerror事件模块通过GET请求将所有错误信息和对应的客户端信息回发给一错误日志收集服务器。
可选的,所述window.onerror事件模块获取的所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。
可选的,所述window.onerror事件模块获取的所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。
实施例二的其它详细内容具体可参见实施例一的相应部分,在此不再赘述。
综上所述,本发明通过定义一个全局函数,并将所述全局函数放置在访问页面的JS代码运行函数的外层,所述全局函数使用try catch语法错误捕获方法获取客户端所有的JS代码的错误,且所述全局函数在catch中并不将JS代码的错误抛出,而是放置在一个全局变量中;在所述访问页面运行时用定时器去访问所述全局变量,一旦发现所述全局变量中有客户端的JS代码的错误,使用throw方法将JS代码的错误抛到window.onerror事件中;在所述window.onerror事件中根据JS代码的错误获取所有错误信息和对应的客户端信息,并将所有错误信息和对应的客户端信息回发给一错误日志收集服务器,能够及时收集真实用户访问网站时其客户端的错误详细信息,以供后续的分析和排错时迅速定位错误来源,提升网站可用性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (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事件模块获取的所述错误信息包括当前访问页面、出错文件、错误名称、错误行号和错误消息。
8.如权利要求1所述的客户端错误日志收集系统,其特征在于,所述window.onerror事件模块获取的所述客户端信息包括地理位置、IP、浏览器类型、浏览器版本号、出错时间和操作系统。
CN201310196076.1A 2013-05-23 2013-05-23 客户端错误日志收集方法及系统 Active CN104182327B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310196076.1A CN104182327B (zh) 2013-05-23 2013-05-23 客户端错误日志收集方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310196076.1A CN104182327B (zh) 2013-05-23 2013-05-23 客户端错误日志收集方法及系统

Publications (2)

Publication Number Publication Date
CN104182327A true CN104182327A (zh) 2014-12-03
CN104182327B CN104182327B (zh) 2017-08-25

Family

ID=51963394

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310196076.1A Active CN104182327B (zh) 2013-05-23 2013-05-23 客户端错误日志收集方法及系统

Country Status (1)

Country Link
CN (1) CN104182327B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766509A (zh) * 2017-10-23 2018-03-06 北京京东尚科信息技术有限公司 一种网页静态备份的方法和装置
CN108334429A (zh) * 2017-01-19 2018-07-27 阿里巴巴集团控股有限公司 用于排查前端页面问题的方法、装置及系统
CN109409399A (zh) * 2018-08-23 2019-03-01 深圳点猫科技有限公司 一种基于教育系统的脚本错误分类记录方法及电子设备
CN109885478A (zh) * 2018-12-30 2019-06-14 贝壳技术有限公司 一种错误代码的定位方法及系统
CN111104322A (zh) * 2019-12-17 2020-05-05 深圳前海环融联易信息科技服务有限公司 移动端调试快速定位问题的方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090158099A1 (en) * 2007-12-14 2009-06-18 Sap Ag Method and apparatus for runtime error handling
CN102117228A (zh) * 2011-02-28 2011-07-06 复旦大学 一种动静态结合的Java程序异常处理优化方法
US20120151274A1 (en) * 2010-12-14 2012-06-14 Bmc Software, Inc. Client-Side Application Script Error Processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090158099A1 (en) * 2007-12-14 2009-06-18 Sap Ag Method and apparatus for runtime error handling
US20120151274A1 (en) * 2010-12-14 2012-06-14 Bmc Software, Inc. Client-Side Application Script Error Processing
CN102117228A (zh) * 2011-02-28 2011-07-06 复旦大学 一种动静态结合的Java程序异常处理优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王涛: ""构建web前端异常监控系统-FdSafe"", 《HTTP://WWW.ALIUED.CN/2012/10/27/%E6%9E%84%E5%BB%BAWEB%E5%89%8D%E7%AB%AF%E5%BC%82%E5%B8%B8%E7%9B%91%E6%8E%A7%E7%B3%BB%E7%BB%9F-FDSAFE.HTML》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334429A (zh) * 2017-01-19 2018-07-27 阿里巴巴集团控股有限公司 用于排查前端页面问题的方法、装置及系统
CN107766509A (zh) * 2017-10-23 2018-03-06 北京京东尚科信息技术有限公司 一种网页静态备份的方法和装置
CN109409399A (zh) * 2018-08-23 2019-03-01 深圳点猫科技有限公司 一种基于教育系统的脚本错误分类记录方法及电子设备
CN109885478A (zh) * 2018-12-30 2019-06-14 贝壳技术有限公司 一种错误代码的定位方法及系统
CN111104322A (zh) * 2019-12-17 2020-05-05 深圳前海环融联易信息科技服务有限公司 移动端调试快速定位问题的方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN104182327B (zh) 2017-08-25

Similar Documents

Publication Publication Date Title
US11134101B2 (en) Techniques for detecting malicious behavior using an accomplice model
US11196756B2 (en) Identifying notable events based on execution of correlation searches
JP6517263B2 (ja) 検索結果へのアクセスを改良するシステム、方法及び記憶媒体
WO2017113677A1 (zh) 处理用户行为数据的方法和系统
US9171319B2 (en) Analysis system and method used to construct social structures based on data collected from monitored web pages
US20210314354A1 (en) Techniques for determining threat intelligence for network infrastructure analysis
US20180349254A1 (en) Systems and methods for end-to-end testing of applications using dynamically simulated data
CN107133240B (zh) 页面监控方法、装置及系统
CN103714119B (zh) 一种浏览器数据的处理方法和装置
CN108763274B (zh) 访问请求的识别方法、装置、电子设备及存储介质
CN109905288B (zh) 一种应用服务分类方法及装置
CN107273267A (zh) 基于elastic组件的日志分析方法
US8639559B2 (en) Brand analysis using interactions with search result items
CN104182327A (zh) 客户端错误日志收集方法及系统
CN107085549B (zh) 故障信息生成的方法和装置
US20180097898A1 (en) Browser activity replay with advanced navigation
US9479414B1 (en) System and method for analyzing computing performance
JP6324534B2 (ja) プロモーション状況データの監視方法、装置、デバイス及び非発揮性コンピューター記憶媒体
US9866454B2 (en) Generating anonymous data from web data
KR20220124271A (ko) 라이브 트래픽의 고장 검측 방법, 장치, 전자 기기 및 판독 가능 저장 매체
US10140377B2 (en) Data processing, data collection
US10089167B2 (en) Log file reduction according to problem-space network topology
CN108011936B (zh) 用于推送信息的方法和装置
CN106789277B (zh) 基于状态机模型的用户行为确定方法及装置
CN111240948A (zh) 一种体验数据处理方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160201

Address after: 200335 Shanghai city Changning District Admiralty Road No. 968 Building No. 16 10 floor

Applicant after: SHANGHAI XIECHENG BUSINESS CO., LTD.

Address before: 200335 Shanghai Changning District Fuquan Road No. 99

Applicant before: Ctrip computer technology (Shanghai) Co., Ltd.

GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Chu Chengdong

Inventor after: Pan Feifei

Inventor before: Chu Chengdong