一種終端的重複日誌過濾方法與流程
2023-11-30 18:21:16 4

本發明涉及網絡安全技術領域,特別是涉及一種終端的重複日誌過濾方法。
背景技術:
日誌即是我們常說的log,通常是系統或者某些軟體對已完成的某種處理的記錄,以便將來異常發生時做為參考,解決軟體的漏洞。日誌的存在,讓異常發生之後,系統和軟體的開發者可以快速定位問題、解決問題,日誌對維護系統和軟體有著至關重要的作用。
目前,雖然已經有很多可以在手機端自動抓取異常日誌的應用,當異常發生時,可以自動把異常相關的日誌保存和上傳伺服器,然後工程師可以根據上傳的日誌解決問題。但是,由於系統無時無刻不在產生日誌,導致日誌文件十分繁雜,當一個異常重複發生時,應用就會不斷地上傳重複的日誌到伺服器,這就導致了數據的冗餘,會浪費工程師大量的時間去分析日誌。
技術實現要素:
本發明主要解決的技術問題是提供一種終端的重複日誌過濾方法,能夠降低開發者的工作量,減少伺服器的開支,提高工作的效率和終端系統的穩定性。
為解決上述技術問題,本發明採用的一個技術方案是:提供一種終端的重複日誌過濾方法,所述方法包括:獲取終端在運行過程中產生的記錄有異常的待存儲日誌;從待存儲日誌提取能夠唯一標識異常的標識信息;利用標識信息生成待存儲日誌的異常快照;比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複;若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫。
為解決上述技術問題,本發明採用的另一個技術方案是:提供一種終端的重複日誌過濾方法,所述方法包括:獲取終端在運行過程中產生的記錄有異常的待存儲日誌;從待存儲日誌提取能夠唯一標識異常的標識信息;利用標識信息生成待存儲日誌的異常快照;將待存儲日誌的異常快照發送至伺服器;判斷伺服器基於待存儲日誌的異常快照反饋的控制指令為上傳指令還是放棄指令;若為上傳指令,則向伺服器上傳待存儲日誌以及待存儲日誌的異常快照上傳至伺服器;若為放棄指令,則不向伺服器上傳待存儲日誌以及待存儲日誌的異常快照上傳至伺服器。
為解決上述技術問題,本發明採用的另一個技術方案是:提供一種終端的重複日誌過濾方法,所述方法包括:從終端接收待存儲日誌的異常快照;比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複;若不存在重複,則向終端發送上傳指令,以指示終端上傳待存儲日誌以及待存儲日誌的異常快照;若存在重複,則向終端發送放棄指令,以指示終端不上傳待存儲日誌以及待存儲日誌的異常快照。
本發明的有益效果是:區別於現有技術的情況,本發明先獲取終端在運行過程中產生的記錄有異常的待存儲日誌,並從待存儲日誌提取能夠唯一標識異常的標識信息,進而利用標識信息生成待存儲日誌的異常快照,比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複,若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫,從而減少伺服器的開支,提高工作的效率和終端系統的穩定性。
附圖說明
圖1是本發明終端的重複日誌過濾方法第一實施方式的流程示意圖;
圖2是本發明終端的重複日誌過濾方法第二實施方式的流程示意圖;
圖3是本發明終端的重複日誌過濾方法第三實施方式的流程示意圖;
圖4是本發明終端的重複日誌過濾方法第四實施方式的流程示意圖;
圖5是本發明終端一實施方式的結構示意圖;
圖6是本發明伺服器一實施方式的結構示意圖。
具體實施方式
請參閱圖1,圖1是本發明終端的重複日誌過濾方法第一實施方式的流程示意圖。需注意的是,若有實質上相同的結果,本發明的方法並不以圖1所示的流程順序為限。如圖1所示,該方法包括如下步驟:
s101:獲取終端在運行過程中產生的記錄有異常的待存儲日誌。
其中,日誌也即是log,通常是系統或者某些軟體對已完成的某種處理的記錄,以便將來做為參考,它並沒有固定的格式,通常是文本文件,可以用記事本打開以查看內容,當然很可能是其它格式,直接打開就是亂碼。大部分的log可以從文件名看出它的作用,比如uninstall.log或是error.log,當然前者通常是軟體安裝過程中生成的記錄,以便將來卸載的時候可以提供給卸載程序使用,後者通常是用來記錄一些軟體運行中的錯誤信息等等。
其中,終端可以手機、平板電腦、筆記本電腦、掌上電腦、移動網際網路設備(mid,mobileinternetdevice)、可穿戴設備(智能手錶、智能手環)或其他終端設備。
其中,首先需要說明一個問題,具有相同異常的待存儲日誌,產生的日誌文件有可能會不同。這是因為日誌文件裡面除了異常信息之外,還記錄了大量動態的信息,比如異常的時間、即時的進程號、動態的內存地址等,這些變化的數據會導致一個同樣的異常,在不同的時間發生,生成的日誌也不同。
進一步地,由於終端設備沒有可以進行檢測異常日誌的功能,因此,終端設備想要獲取在運行過程中產生的記錄有異常的待存儲日誌的信息,需要註冊相應的服務。具體地,當安卓(android)設備註冊了dropbox之後,android系統中的dropboxmanager就會發送dropbox的廣播,android設備便可以得到記錄有異常的待存儲日誌。
s102:從待存儲日誌提取能夠唯一標識異常的標識信息。
其中,由於具有相同異常的待存儲日誌,產生的日誌文件有可能會不同。因此,可以提取待存儲日誌中能夠唯一標識異常的標識信息,這些能夠唯一標識異常的標識信息不包括日誌的動態的信息。
s103:利用標識信息生成待存儲日誌的異常快照。
其中,根據預定的精簡規則對標識信息進行精簡。具體地,先判斷標識信息是否包含特定符號;若包含特定符號,則去除特定符號。其中,特定符號包括空格等。
進一步地,將標識信息與異常所對應的異常應用包名稱以及終端所運行的作業系統的系統版本號進行關聯,並作為待存儲日誌的異常快照。具體地,將標識信息與異常應用包名以及終端所運行的作業系統的系統版本號用「===」連接起來,形成一個字符串類型的完整異常快照。
s104:比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複。
其中,資料庫中存在的已存儲日誌的異常快照包括能夠唯一標識異常的標識信息、異常所對應的異常應用包名以及終端所運行的作業系統的系統版本號。具體地,對比地過程也即是對比待存儲日誌以及資料庫中存在的已存儲日誌的能夠唯一標識異常的標識信息、異常所對應的異常應用包名以及終端所運行的作業系統的系統版本號。
s105:若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫。
具體地,若待存儲日誌與已存儲日誌的唯一區別僅僅在於動態信息的不同,則系統視待存儲日誌與已存儲日誌為重複日誌。
s106:若存在重複,則將待存儲日誌以及待存儲日誌的異常快照不存儲至資料庫。
在本實施方式中,先獲取終端在運行過程中產生的記錄有異常的待存儲日誌,並從待存儲日誌提取能夠唯一標識異常的標識信息,進而利用標識信息生成待存儲日誌的異常快照,比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複,若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫,從而減少伺服器的開支,提高工作的效率和終端系統的穩定性。
請參閱圖2,圖2是本發明終端的重複日誌過濾方法第二實施方式的流程示意圖。本實施方式為從待存儲日誌提取能夠唯一標識異常的標識信息的其中以具體的實施方式,該方法包括以下步驟:
s201:根據待存儲日誌確定異常的類型。
具體地,待存儲日誌確定異常的類型可以具體的分為應用層的異常(javeexception)、本地層的異常(nativeexception)以及應用無響應的異常(applicationnotresponsing)。
s202:根據異常的類型確定提取規則。
具體地,應用層的異常的提取規則為:對異常信息每一行進行兩次判斷,首先判斷是否由at開頭,然後判斷是否包含報錯應用包名。由於at開頭的是異常的堆棧信息,是異常發生代碼的位置,可以唯一標識這個異常;而包含報錯應用的包名之後,可以去掉一些無關的內容,可以精簡異常快照。
具體地,本地層的異常的提取規則為:對異常信息每一行進行判斷,把由「#00」「#01」「#02」開頭的行提取出來,並去除空格等符號。由於本地層的異常的類型重要的異常信息集中在這三行中,可以把這三行的內容作為異常快照的主體。
具體地,應用無響應的異常的提取規則為:對異常信息每一行進行判斷,把由「executing」開頭的行提取出來,並去除空格等符號。
s203:根據提取規則從待存儲日誌提取標識信息。
其中一個具體的實施方式為,對待存儲日誌中的異常信息進行逐行掃描,並判斷當前行的異常信息中是否包含與提取規則對應的特定標記,若包含特定標記,則提取當前行的異常信息作為標識信息。
具體地,應用層的異常所提取的行同時包含at開頭和報錯應用包名;本地層的異常所提取的行包含由「#00」「#01」「#02」開頭;應用無響應的異常所提取的行包含由「executing」開頭。
在其中一個具體的實施方式中,以android設備為例,當android設備的應用層發生異常時,android系統的dropboxmanager會發送dropbox廣播。把dropbox廣播裡面獲取的信息並且加以整合之後可以獲得下面一段異常信息。
type:javaexception
(je),time:20161008091222866,packagename:com.dropboxtest2.testerror,tag:data_app_crash,pid:0000,
process:com.dropboxtest2.testerror
flags:0x38e8be46
package:com.dropboxtest2.testerrorv1(1.0)
build:tcl/5080x/shine_lite:6.0/mra58k/v2ca6-0:user/release-keys
java.lang.nullpointerexception:attempttoinvokevirtualmethod'intjava.lang.string.length'onanullobjectreference
at
com.dropboxtest2.testerror.mainactivity.onclick(mainactivity.java:71)
atandroid.view.view.performclick(view.java:5265)
atandroid.view.view$performclick.run(view.java:21534)
atandroid.os.handler.handlecallback(handler.java:815)
atandroid.os.handler.dispatchmessage(handler.java:104)
atandroid.os.looper.loop(looper.java:207)
atandroid.app.activitythread.main(activitythread.java:5774)
atjava.lang.reflect.method.invoke(nativemethod)
at
com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:789)
atcom.android.internal.os.zygoteinit.main(zygoteinit.java:679)
先提取異常所對應的異常應用包名為:com.dropboxtest2.testerror。然後再掃描每一行,把符合這兩個條件的數據保存下來:由at開頭以及包含報錯應用包名。將滿足這兩個條件的行,去除空格等符號,並把獲得的標識信息保存在字符串logbody裡:
atcom.dropboxtest2.testerror.mainactivity.onclick(mainactivity.java:71)
接著,將字符串logbody、異常所對應的異常應用包名以及終端所運行的作業系統的系統版本號用「===」連接起來,形成一個字符串異常快照,其最終異常快照結果為:
tcl/5080x/shine_lite:6.0/mra58k/v2ca6-0:user/release-keys===com.dropboxtest2.testerror===atcom.dropboxtest2.testerror.mainactivity.onclick(mainactivity.java:71)。
最後,將該異常快照與資料庫中存在的已存儲日誌的異常快照進行比對,若比對結果不一致,則將該異常快照和與該異常快照所對應的待存儲日誌上傳至資料庫,否則,則不上傳。
本實施方式中,系統根據待存儲日誌確定異常的類型,進而根據異常的類型確定提取規則,並根據提取規則從待存儲日誌提取標識信息,能夠快速提取出能夠唯一標識異常的標識信息,降低開發者的工作量,減少伺服器的開支,提高工作的效率。
請參閱圖3,圖3是本發明終端的重複日誌過濾方法第三實施方式的流程示意圖。本實施方式是以終端為主體的其中一種實施方式,該方法包括以下步驟:
s301:獲取終端在運行過程中產生的記錄有異常的待存儲日誌。
s302:從待存儲日誌提取能夠唯一標識異常的標識信息。
其中,提取能夠唯一標識異常的標識信息的其中一種實施方式為:先根據待存儲日誌確定異常的類型,然後根據異常的類型確定提取規則,最後根據提取規則從待存儲日誌提取標識信息。
具體地,根據提取規則從待存儲日誌提取標識信息的其中一種實施方式為:先對待存儲日誌中的異常信息進行逐行掃描,然後判斷當前行的異常信息中是否包含與提取規則對應的特定標記,若是包含特定標記,則提取當前行的異常信息作為標識信息。
s303:利用標識信息生成待存儲日誌的異常快照。
其中,要判斷標識信息是否包含特定符號,若包含特定符號,則去除特定符號。具體地,特定符號為空格等。
其中,將標識信息與異常所對應的異常應用包名稱以及終端所運行的作業系統的系統版本號進行關聯,並作為待存儲日誌的異常快照。
s304:將待存儲日誌的異常快照發送至伺服器。
s305:判斷伺服器基於待存儲日誌的異常快照反饋的控制指令為上傳指令還是放棄指令。
s306:若為上傳指令,則向伺服器上傳待存儲日誌以及待存儲日誌的異常快照上傳至伺服器。
s307:若為放棄指令,則不向伺服器上傳待存儲日誌以及待存儲日誌的異常快照上傳至伺服器。
本實施方式中,先獲取終端在運行過程中產生的記錄有異常的待存儲日誌,並從待存儲日誌提取能夠唯一標識異常的標識信息,進而利用標識信息生成待存儲日誌的異常快照,比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複,若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫,從而減少伺服器的開支,提高工作的效率和終端系統的穩定性。
請參閱圖4,圖4是本發明終端的重複日誌過濾方法第四實施方式的流程示意圖。本實施方式是以伺服器為主體的其中一種實施方式,該方法包括以下步驟:
s401:從終端接收待存儲日誌的異常快照。
s402:比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複。
s403:若不存在重複,則向終端發送上傳指令,以指示終端上傳待存儲日誌以及待存儲日誌的異常快照。
s404:若存在重複,則向終端發送放棄指令,以指示終端不上傳待存儲日誌以及待存儲日誌的異常快照。
本實施方式中,先獲取終端在運行過程中產生的記錄有異常的待存儲日誌,並從待存儲日誌提取能夠唯一標識異常的標識信息,進而利用標識信息生成待存儲日誌的異常快照,比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複,若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫,從而減少伺服器的開支,提高工作的效率和終端系統的穩定性。
請參閱圖5,圖5是本發明終端一實施方式的結構示意圖。本實施方式中,該終端50為上述實施方式中的終端,該終端50包括第一處理器51、第一存儲器52、第一接收器53以及第一發送器54。
第一存儲器52用於存儲作業系統、第一處理器51執行的指令以及接收到的消息等。
第一接收器53用於接收伺服器指令。
第一發送器54用於上傳待存儲日誌以及待存儲日誌的異常快照。
第一處理器51用於獲取終端在運行過程中產生的記錄有異常的待存儲日誌;從待存儲日誌提取能夠唯一標識異常的標識信息;利用標識信息生成待存儲日誌的異常快照;將待存儲日誌的異常快照發送至伺服器;判斷伺服器基於待存儲日誌的異常快照反饋的控制指令為上傳指令還是放棄指令;若為上傳指令,則向伺服器上傳待存儲日誌以及待存儲日誌的異常快照上傳至伺服器;若為放棄指令,則不向伺服器上傳待存儲日誌以及待存儲日誌的異常快照上傳至伺服器。
其中,第一處理器51還用於根據待存儲日誌確定異常的類型;根據異常的類型確定提取規則;根據提取規則從待存儲日誌提取標識信息。
進一步地,第一處理器51還用於對待存儲日誌中的異常信息進行逐行掃描;判斷當前行的異常信息中是否包含與提取規則對應的特定標記;若包含特定標記,則提取當前行的異常信息作為標識信息。
進一步地,第一處理器51還用於判斷標識信息是否包含特定符號;若包含特定符號,則去除特定符號。
進一步地,第一處理器51還用於將標識信息與異常所對應的異常應用包名稱以及終端所運行的作業系統的系統版本號進行關聯,並作為待存儲日誌的異常快照。
本實施方式中,先獲取終端在運行過程中產生的記錄有異常的待存儲日誌,並從待存儲日誌提取能夠唯一標識異常的標識信息,進而利用標識信息生成待存儲日誌的異常快照,比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複,若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫,從而減少伺服器的開支,提高工作的效率和終端系統的穩定性。
請參閱圖6,圖6是本發明伺服器一實施方式的流程示意圖。本實施方式中,該終端60為上述實施方式中的伺服器,該伺服器60包括第二處理器61、第二存儲器62、第二接收器63以及第二發送器64。
第二存儲器62用於存儲作業系統、第二處理器61執行的指令以及接收到的消息等。
第二接收器63用於從終端接收待存儲日誌的異常快照。
第二發送器64用於發送上傳指令和放棄指令。
第二處理器61用於比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複;若不存在重複,則向終端發送上傳指令,以指示終端上傳待存儲日誌以及待存儲日誌的異常快照;若存在重複,則向終端發送放棄指令,以指示終端不上傳待存儲日誌以及待存儲日誌的異常快照。
本實施方式中,先獲取終端在運行過程中產生的記錄有異常的待存儲日誌,並從待存儲日誌提取能夠唯一標識異常的標識信息,進而利用標識信息生成待存儲日誌的異常快照,比對待存儲日誌的異常快照與資料庫中存在的已存儲日誌的異常快照是否存在重複,若不存在重複,則將待存儲日誌以及待存儲日誌的異常快照存儲至資料庫,從而減少伺服器的開支,提高工作的效率和終端系統的穩定性。
以上所述僅為本發明的實施方式,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。