本發(fā)明專利技術(shù)提供了一種客戶端錯(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í)收集真實(shí)用戶訪問(wèn)網(wǎng)站時(shí)其客戶端的錯(cuò)誤詳細(xì)信息,以供后續(xù)的分析和排錯(cuò)時(shí)迅速定位錯(cuò)誤來(lái)源,提升網(wǎng)站可用性。
【技術(shù)實(shí)現(xiàn)步驟摘要】
客戶端錯(cuò)誤日志收集方法及系統(tǒng)
本專利技術(shù)涉及一種客戶端錯(cuò)誤日志收集方法及系統(tǒng)。
技術(shù)介紹
目前,由于訪問(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)。現(xiàn)有的做法是只有當(dāng)大批量用戶客戶端報(bào)故障時(shí)才去聯(lián)系客戶端,而且需要在客戶端提供具體信息后,才能進(jìn)行錯(cuò)誤排查。這種做法不但會(huì)對(duì)用戶造成損失和不良影響,而且容易延誤故障的處理的時(shí)間。
技術(shù)實(shí)現(xiàn)思路
本專利技術(shù)的目的在于提供一種客戶端錯(cuò)誤日志收集方法及系統(tǒng),能夠能夠及時(shí)收集真實(shí)用戶訪問(wèn)網(wǎng)站時(shí)其客戶端的錯(cuò)誤詳細(xì)信息,以供后續(xù)的分析和排錯(cuò)時(shí)迅速定位錯(cuò)誤來(lái)源,提升網(wǎng)站可用性。為解決上述問(wèn)題,本專利技術(shù)提供一種客戶端錯(cuò)誤日志收集方法,包括:定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用trycatch語(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ù)器。進(jìn)一步的,在上述方法中,將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器的步驟中,通過(guò)GET請(qǐng)求將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。進(jìn)一步的,在上述方法中,所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消息。進(jìn)一步的,在上述方法中,所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。根據(jù)本專利技術(shù)的另一面,提供一種客戶端錯(cuò)誤日志收集系統(tǒng),包括:全局函數(shù)模塊,用于定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用trycatch語(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ù)器。進(jìn)一步的,在上述系統(tǒng)中,所述window.onerror事件模塊通過(guò)GET請(qǐng)求將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。進(jìn)一步的,在上述系統(tǒng)中,所述window.onerror事件模塊獲取的所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消息。進(jìn)一步的,在上述系統(tǒng)中,所述window.onerror事件模塊獲取的所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。與現(xiàn)有技術(shù)相比,本專利技術(shù)通過(guò)定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用trycatch語(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ō)明圖1是本專利技術(shù)一實(shí)施例的客戶端錯(cuò)誤日志收集方法的流程圖;圖2是本專利技術(shù)一實(shí)施例的客戶端錯(cuò)誤日志收集系統(tǒng)的模塊示意圖。具體實(shí)施方式為使本專利技術(shù)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本專利技術(shù)作進(jìn)一步詳細(xì)的說(shuō)明。實(shí)施例一如圖1所示,本專利技術(shù)提供一種客戶端錯(cuò)誤日志收集方法,包括:步驟S1,定義一個(gè)全局函數(shù)run,并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用trycatch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在catch中并不將JS代碼的錯(cuò)誤拋出,而是放置在一個(gè)全局變量globalError中;步驟S1的具體實(shí)現(xiàn)程序可如下:步驟S2,在所述訪問(wèn)頁(yè)面運(yùn)行時(shí)用定時(shí)器去訪問(wèn)所述全局變量globalError,一旦發(fā)現(xiàn)所述全局變量中有客戶端的JS代碼的錯(cuò)誤,使用throw方法將JS代碼的錯(cuò)誤拋到window.onerror事件中,這樣可以解決跨域的scripterror的問(wèn)題;步驟S2的具體實(shí)現(xiàn)程序可如下:步驟S3,在所述window.onerror事件中根據(jù)JS代碼的錯(cuò)誤獲取所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息,并將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器。本專利技術(shù)一實(shí)施例中,步驟S3中,通過(guò)GET請(qǐng)求將所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息回發(fā)給一錯(cuò)誤日志收集服務(wù)器,錯(cuò)誤日志收集服務(wù)器接收到錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息可以進(jìn)行實(shí)時(shí)數(shù)據(jù)存儲(chǔ)、分類匯總。可選的,所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消息。可選的,所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。步驟S2的具體實(shí)現(xiàn)程序可如下:trycatch能夠捕捉到順序執(zhí)行代碼的錯(cuò)誤,無(wú)法捕獲延遲執(zhí)行的代碼,而且此錯(cuò)誤不會(huì)繼續(xù)傳播,同時(shí)如果要收集到JS文件中的錯(cuò)誤,需要在每個(gè)特定的函數(shù)外層增加trycatch;而window.onerror事件可以收集到所有類型的錯(cuò)誤,但是如果頁(yè)面引用的JS文件與頁(yè)面出現(xiàn)跨域情況時(shí),所有的錯(cuò)誤信息為“scripterror”,導(dǎo)致無(wú)法進(jìn)行錯(cuò)誤跟蹤排查。所以,本實(shí)施例采用javascript語(yǔ)言中的trycatch和window.onerror結(jié)合的方法進(jìn)行客戶端錯(cuò)誤信息的實(shí)時(shí)跟蹤和獲取,以克服單獨(dú)使用trycatch或window.onerror方法中存在的問(wèn)題。根據(jù)所述錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息能在第一時(shí)間通過(guò)日志分析出用戶特定的網(wǎng)絡(luò)環(huán)境、電腦系統(tǒng)、瀏覽器等信息,進(jìn)行錯(cuò)誤的重現(xiàn)和及時(shí)排查修復(fù),排查特定錯(cuò)誤時(shí)根據(jù)錯(cuò)誤日志收集服務(wù)器的記錄進(jìn)行篩選和排查,可以準(zhǔn)確迅速的定位到出錯(cuò)的特定環(huán)境和錯(cuò)誤原因,實(shí)時(shí)保證網(wǎng)站的可用性。實(shí)施例二如圖2所示,本專利技術(shù)還提供另一種客戶端錯(cuò)誤日志收集系統(tǒng),包括全局函數(shù)模塊1、定時(shí)器模塊2和window.onerror事件模塊3。全局函數(shù)模塊1,用于定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用trycatch語(yǔ)法錯(cuò)誤捕獲方法獲取客戶端所有的JS代碼的錯(cuò)誤,且所述全局函數(shù)在cat本文檔來(lái)自技高網(wǎng)...

【技術(shù)保護(hù)點(diǎn)】
一種客戶端錯(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ù)器。
【技術(shù)特征摘要】
1.一種客戶端錯(cuò)誤日志收集方法,其特征在于,包括:定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)面的JS代碼運(yùn)行函數(shù)的外層,所述全局函數(shù)使用trycatch語(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)的客戶端信息通過(guò)GET請(qǐng)求回發(fā)給一錯(cuò)誤日志收集服務(wù)器,所述錯(cuò)誤日志收集服務(wù)器收到所有錯(cuò)誤信息和對(duì)應(yīng)的客戶端信息后進(jìn)行實(shí)時(shí)數(shù)據(jù)存儲(chǔ)和分類匯總。2.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集方法,其特征在于,所述錯(cuò)誤信息包括當(dāng)前訪問(wèn)頁(yè)面、出錯(cuò)文件、錯(cuò)誤名稱、錯(cuò)誤行號(hào)和錯(cuò)誤消息。3.如權(quán)利要求1所述的客戶端錯(cuò)誤日志收集方法,其特征在于,所述客戶端信息包括地理位置、IP、瀏覽器類型、瀏覽器版本號(hào)、出錯(cuò)時(shí)間和操作系統(tǒng)。4.一種客戶端錯(cuò)誤日志收集系統(tǒng),其特征在于,包括:全局函數(shù)模塊,用于定義一個(gè)全局函數(shù),并將所述全局函數(shù)放置在訪問(wèn)頁(yè)...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:儲(chǔ)誠(chéng)棟,
申請(qǐng)(專利權(quán))人:攜程計(jì)算機(jī)技術(shù)上海有限公司,
類型:發(fā)明
國(guó)別省市:上海;31
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。