客戶端錯(cuò)誤日志收集方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種客戶端錯(cuò)誤日志收集方法及系統(tǒng),通過(guò)將全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,全局函數(shù)使用try?catch獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量中;在所述訪問(wèn)頁(yè)面運(yùn)行時(shí)用定時(shí)器去訪問(wèn)所述全局變量,一旦發(fā)現(xiàn)所述全局變量中有客戶端的JS代碼的錯(cuò)誤,使用throw方法將JS代碼的錯(cuò)誤拋到window.onerror事件中;在所述window.onerror事件中根據(jù)JS代碼的錯(cuò)誤獲取所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息,并將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器,本發(fā)明能夠及時(shí)收集真實(shí)用戶訪問(wèn)網(wǎng)站時(shí)其客戶端的錯(cuò)誤詳細(xì)信息,以供后續(xù)的分析和排錯(cuò)時(shí)迅速定位錯(cuò)誤來(lái)源,提升網(wǎng)站可用性。
【專利說(shuō)明】客戶端錯(cuò)誤日志收集方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種客戶端錯(cuò)誤日志收集方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前,由于訪問(wèn)互聯(lián)網(wǎng)用戶客戶端的網(wǎng)絡(luò)環(huán)境、電腦系統(tǒng)、瀏覽器版本等十分復(fù)雜且具有獨(dú)特性,而網(wǎng)站發(fā)布前只能通過(guò)模擬典型環(huán)境進(jìn)行測(cè)試,導(dǎo)致一些在特性環(huán)境下出現(xiàn)前端錯(cuò)誤往往無(wú)法重現(xiàn)。
[0003]現(xiàn)有的做法是只有當(dāng)大批量用戶客戶端報(bào)故障時(shí)才去聯(lián)系客戶端,而且需要在客戶端提供具體信息后,才能進(jìn)行錯(cuò)誤排查。這種做法不但會(huì)對(duì)用戶造成損失和不良影響,而且容易延誤故障的處理的時(shí)間。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種客戶端錯(cuò)誤日志收集方法及系統(tǒng),能夠能夠及時(shí)收集真實(shí)用戶訪問(wèn)網(wǎng)站時(shí)其客戶端的錯(cuò)誤詳細(xì)信息,以供后續(xù)的分析和排錯(cuò)時(shí)迅速定位錯(cuò)誤來(lái)源,提升網(wǎng)站可用性。
[0005]為解決上述問(wèn)題,本發(fā)明提供一種客戶端錯(cuò)誤日志收集方法,包括:
[0006]定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用try catch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量中;
[0007]在所述訪問(wèn)頁(yè)面運(yùn)行時(shí)用定時(shí)器去訪問(wèn)所述全局變量,一旦發(fā)現(xiàn)所述全局變量中有客戶端的JS代碼的錯(cuò)誤,使用throw方法將JS代碼的錯(cuò)誤拋到window, onerror事件中;
[0008]在所述window, onerror事件中根據(jù)JS代碼的錯(cuò)誤獲取所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息,并將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
[0009]進(jìn)一步的,在上述方法中,將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器的步驟中,通過(guò)GET請(qǐng)求將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
[0010]進(jìn)一步的,在上述方法中,所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消息。
[0011]進(jìn)一步的,在上述方法中,所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。
[0012]根據(jù)本發(fā)明的另一面,提供一種客戶端錯(cuò)誤日志收集系統(tǒng),包括:
[0013]全局函數(shù)模塊,用于定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用try catch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量中;
[0014]定時(shí)器模塊,用于在所述訪問(wèn)頁(yè)面運(yùn)行時(shí)訪問(wèn)所述全局變量,一旦發(fā)現(xiàn)所述全局變量中有客戶端的JS代碼的錯(cuò)誤,使用throw方法將JS代碼的錯(cuò)誤拋到window, onerror事件中;
[0015]window, onerror事件模塊,用于在所述window, onerror事件中根據(jù)JS代碼的錯(cuò)誤獲取所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息,并將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
[0016]進(jìn)一步的,在上述系統(tǒng)中,所述window, onerror事件模塊通過(guò)GET請(qǐng)求將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
[0017]進(jìn)一步的,在上述系統(tǒng)中,所述window, onerror事件模塊獲取的所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消息。
[0018]進(jìn)一步的,在上述系統(tǒng)中,所述window, onerror事件模塊獲取的所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。
[0019]與現(xiàn)有技術(shù)相比,本發(fā)明通過(guò)定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用try catch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量中;在所述訪問(wèn)頁(yè)面運(yùn)行時(shí)用定時(shí)器去訪問(wèn)所述全局變量,一旦發(fā)現(xiàn)所述全局變量中有客戶端的JS代碼的錯(cuò)誤,使用throw方法將JS代碼的錯(cuò)誤拋到window,onerror事件中;在所述window, onerror事件中根據(jù)JS代碼的錯(cuò)誤獲取所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息,并將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器,能夠及時(shí)收集真實(shí)用戶訪問(wèn)網(wǎng)站時(shí)其客戶端的錯(cuò)誤詳細(xì)信息,以供后續(xù)的分析和排錯(cuò)時(shí)迅速定位錯(cuò)誤來(lái)源,提升網(wǎng)站可用性。
【專利附圖】
【附圖說(shuō)明】
[0020]圖1是本發(fā)明一實(shí)施例的客戶端錯(cuò)誤日志收集方法的流程圖;
[0021]圖2是本發(fā)明一實(shí)施例的客戶端錯(cuò)誤日志收集系統(tǒng)的模塊示意圖。
【具體實(shí)施方式】
[0022]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
[0023]實(shí)施例一
[0024]如圖1所示,本發(fā)明提供一種客戶端錯(cuò)誤日志收集方法,包括:
[0025]步驟SI,定義一個(gè)全局函數(shù)run,并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用try catch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量globalError 中;
[0026]步驟SI的具體實(shí)現(xiàn)程序可如下:
[0027]
【權(quán)利要求】
1.一種客戶端錯(cuò)誤日志收集方法,其特征在于,包括: 定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用try catch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量中; 在所述訪問(wèn)頁(yè)面運(yùn)行時(shí)用定時(shí)器去訪問(wèn)所述全局變量,一旦發(fā)現(xiàn)所述全局變量中有客戶端的JS代碼的錯(cuò)誤,使用throw方法將JS代碼的錯(cuò)誤拋到window, onerror事件中;在所述window, onerror事件中根據(jù)JS代碼的錯(cuò)誤獲取所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息,并將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
2.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集方法,其特征在于,將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器的步驟中,通過(guò)GET請(qǐng)求將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
3.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集方法,其特征在于,所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消息。
4.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集方法,其特征在于,所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。
5.一種客戶端錯(cuò)誤日志收集系統(tǒng),其特征在于,包括: 全局函數(shù)模塊,用于定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用try catch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量中; 定時(shí)器模塊,用于在所述訪問(wèn)頁(yè)面運(yùn)行時(shí)訪問(wèn)所述全局變量,一旦發(fā)現(xiàn)所述全局變量中有客戶端的JS代碼的錯(cuò)誤,使用throw方法將JS代碼的錯(cuò)誤拋到window, onerror事件中; window, onerror事件模塊,用于在所述window, onerror事件中根據(jù)JS代碼的錯(cuò)誤獲取所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息,并將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
6.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集系統(tǒng),其特征在于,所述window,onerror事件模塊通過(guò)GET請(qǐng)求將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。
7.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集系統(tǒng),其特征在于,所述window,onerror事件模塊獲取的所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消肩、O
8.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集系統(tǒng),其特征在于,所述window,onerror事件模塊獲取的所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。
【文檔編號(hào)】G06F11/34GK104182327SQ201310196076
【公開(kāi)日】2014年12月3日 申請(qǐng)日期:2013年5月23日 優(yōu)先權(quán)日:2013年5月23日
【發(fā)明者】?jī)?chǔ)誠(chéng)棟 申請(qǐng)人:攜程計(jì)算機(jī)技術(shù)(上海)有限公司