一種日志信息的處理方法和裝置的制造方法
【專利摘要】本發(fā)明實施例提供了一種日志信息的處理方法和裝置,以解決無法分析隨機偶發(fā)性狀況的問題。所述的方法包括:在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出;所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新;第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量,其中,所述第二進程用于對第一進程進行監(jiān)控;所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。在運行過程中動態(tài)改變日志信息記錄和輸出的內容,以通過動態(tài)輸出日志實現(xiàn)對隨機偶發(fā)性問題的分析。
【專利說明】
一種日志信息的處理方法和裝置
技術領域
[0001]本發(fā)明涉及互聯(lián)網技術領域,特別是涉及一種日志信息的處理方法和一種日志信息的處理裝置。
【背景技術】
[0002]在軟件系統(tǒng)的開發(fā)過程中,系統(tǒng)越龐大和復雜,出現(xiàn)問題的概率就會呈現(xiàn)非線性的增長,此時日志(log)信息對于問題的定位和分析解決起著至關重要的作用,尤其是軟件系統(tǒng)成為產品的一部分被發(fā)布到用戶手中實際使用過程中時,用戶往往只能夠反應問題的表面現(xiàn)象,要深入分析到問題的內部原因還得依據現(xiàn)場保留的日志信息。從理論上講,日志信息越詳細越好,但是負面影響是消耗系統(tǒng)性能和占用系統(tǒng)存儲空間,因此,如何最大化日志信息的記錄和最小化日志信息的性能影響是一個追求的目標。
[0003]傳統(tǒng)的通過將日志信息功能模塊編譯進軟件運行系統(tǒng),程序啟動時讀取配置文件或者是啟動參數(shù)來確定哪些日志信息需要記錄和輸出,可以從一定程度上避免大量日志信息的性能消耗,同時挑選一些重要的信息予以記錄和輸出。但想改變日志信息記錄和輸出的內容時必須重新啟動程序,同時也不能在運行過程中動態(tài)改變日志信息記錄和輸出的內容,無法分析隨機偶發(fā)性問題。
【發(fā)明內容】
[0004]本發(fā)明實施例所要解決的技術問題是提供一種日志信息的處理方法,以解決無法分析隨機偶發(fā)性狀況的問題。
[0005]相應的,本發(fā)明實施例還提供了一種日志信息的處理裝置,用以保證上述方法的實現(xiàn)及應用。
[0006]為了解決上述問題,本發(fā)明實施例公開了一種日志信息的處理方法,所述的方法包括:在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出;所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新;第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量,其中,所述第二進程用于對第一進程進行監(jiān)控;所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。
[0007]本發(fā)明實施例還公開了一種日志信息的處理裝置,所述的裝置包括:創(chuàng)建與注冊模塊,用于在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出;監(jiān)視模塊,用于所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新;配置模塊,用于第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量,其中,所述第二進程用于對第一進程進行監(jiān)控;輸出模塊,用于所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。
[0008]與現(xiàn)有技術相比,本發(fā)明實施例包括以下優(yōu)點:
[0009]本申請?zhí)峁┑娜罩拘畔⒌奶幚矸椒ê脱b置,能夠在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,如果活動監(jiān)視變量出現(xiàn)異常就改變開關的開關量,使開關的開關量配置為輸出日志對應的開關量,輸出日志信息??梢栽谶\行過程中動態(tài)改變日志信息記錄和輸出的內容,以通過動態(tài)輸出日志實現(xiàn)對隨機偶發(fā)性問題的分析。
【附圖說明】
[0010]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0011]圖1是本發(fā)明的一種日志信息的處理方法實施例的步驟流程圖;
[0012]圖2是本發(fā)明的另一種日志信息的處理方法實施例的步驟流程圖;
[0013]圖3是本發(fā)明的一種日志信息的處理裝置實施例的結構框圖;
[0014]圖4是本發(fā)明的另一種日志信息的處理裝置實施例的結構框圖。
【具體實施方式】
[0015]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0016]本發(fā)明實施例的核心構思之一在于,提供一種日志信息的處理方法和裝置,能夠在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,如果活動監(jiān)視變量出現(xiàn)異常就改變開關的開關量,使開關的開關量配置為輸出日志對應的開關量,輸出日志信息??梢栽谶\行過程中動態(tài)改變日志信息記錄和輸出的內容,以通過動態(tài)輸出日志實現(xiàn)對隨機偶發(fā)性問題的分析。
[0017]實施例一
[0018]詳細介紹本發(fā)明實施例的日志信息的處理方法。
[0019]參照圖1,示出了本發(fā)明的一種日志信息的處理方法實施例的步驟流程圖,具體可以包括如下步驟:
[0020]步驟S102、在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出。
[0021]被監(jiān)控目標包括軟件、操作系統(tǒng)等計算機程序,被監(jiān)控目標在開發(fā)或使用過程中可能會出現(xiàn)一些問題,被監(jiān)控目標越龐大、復雜,出現(xiàn)問題的概率就會呈現(xiàn)非線性的增長。要深入分析問題的內部原因,就需要確定被監(jiān)控目標在執(zhí)行過程中記錄的日志信息,即依據日志信息分析被監(jiān)控目標的問題。為了能夠盡量詳細的記錄日志信息,且盡量減少對系統(tǒng)性能的消耗以及對系統(tǒng)存儲空間的占用,本實施例在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并且注冊至少一個開關。其中,將開關設置在被監(jiān)控目標的一些關鍵位置,通過開關的開關量控制相應位置日志輸入與否。并且基于活動監(jiān)視變量對應變量值的變化反映被監(jiān)控目標中相應功能模塊的運行情況?;顒颖O(jiān)視變量變化異常時,可以控制部分或全部開關開啟,進行日志輸出,但是各活動監(jiān)視變量對應開啟的開關與實際需求相關,如全部開啟,或者開啟與該活動監(jiān)視變量相關的位置的開關,本發(fā)明實施例對此不做限定。
[0022]步驟S104、所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新。
[0023]被監(jiān)控目標包含至少一個進程,根據需求選定某個進程為第一進程,如將被監(jiān)控目標的主進程作為第一進程。被監(jiān)控目標中的第一進程在運行的過程中能夠實現(xiàn)相應的功能,每個功能可以通過相應的操作步驟執(zhí)行來實現(xiàn),為了檢測各功能的操作步驟是否正常執(zhí)行,可以按照預置規(guī)則對該功能對應的活動監(jiān)視變量的變量值進行更新,通過變量值確定步驟的執(zhí)行過程。
[0024]步驟S106、第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量。
[0025]第二進程可以是被監(jiān)控目標中的一個進程,也可以是在被監(jiān)控目標以外的一個單獨的進程。第二進程能夠對被監(jiān)控目標進行監(jiān)控,即第二進程對所述第一進程進行監(jiān)控,從而監(jiān)控活動監(jiān)視變量的變量值是否按照預置規(guī)則執(zhí)行更新,當活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,表征被監(jiān)控目標在運行過程中出現(xiàn)問題,第二進程可以通過控制開關的開啟和關閉來控制被監(jiān)控目標的日志的動態(tài)輸出,因此可以在確定被監(jiān)控目標的運行出現(xiàn)問題時,將全部或部分開關的開關量配置為輸出日志對應的開關量,從而控制日志輸出,以便于后續(xù)定位問題。
[0026]步驟S108、所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。
[0027]第一進程運行時執(zhí)行相應模塊、功能的過程中會檢測在其位置處配置的開關是否開啟,若檢測到開關開啟即該開關的開關量為輸出日志對應的開關量,則在該過程中輸出相應的日志信息,從而通過開關量的變更可以動態(tài)調整被監(jiān)控目標中日志的輸出。
[0028]綜上所述,在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,能夠在活動監(jiān)視變量出現(xiàn)異常時改變開關的開關量,使開關的開關量配置為輸出日志對應的開關量,在被監(jiān)控目標運行的相應過程時輸出日志信息。從而在運行過程中動態(tài)控制被監(jiān)控目標中日志信息記錄和輸出,能夠有效的對隨機偶發(fā)性問題進行記錄以便后續(xù)分析使用。
[0029]實施例二
[0030]詳細介紹本發(fā)明實施例的另一種日志信息的處理方法。
[0031]參照圖2,示出了本發(fā)明的另一種日志信息的處理方法實施例的步驟流程圖,具體可以包括如下步驟:
[0032]步驟S202、在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量。
[0033]為了能夠在被監(jiān)控目標的運行出現(xiàn)問題時控制日志輸出以定位問題,可以在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量,例如針對被監(jiān)控目標中某個功能或模塊實現(xiàn)的操作步驟創(chuàng)建活動監(jiān)視變量。其中創(chuàng)建活動監(jiān)視變量包括以下子步驟:
[0034]子步驟S20202、在被監(jiān)控目標的第一進程中創(chuàng)建活動監(jiān)視變量。
[0035]子步驟S20204、接收返回的所述活動監(jiān)視變量對應的第一內存地址。
[0036]子步驟S20206、所述第一內存地址中配置所述活動監(jiān)視變量的變量值。
[0037]本實施例中,可以通過相應的應用程序編程接口(Applicat1n ProgrammingInterface, API)創(chuàng)建活動監(jiān)視變量。例如通過LogSw_RegSw創(chuàng)建活動監(jiān)視變量soft_watch_dogl,如配置 PVOID pSoftWatchDogVar = LogSw_RegSw ( “soft_watch_dogl”)。
[0038]為創(chuàng)建的活動監(jiān)視變量分配一個第一內存地址,用于存儲活動監(jiān)視變量的變量值,接收所述活動監(jiān)視變量對應的第一內存地址,在第一內存地址中配置所述活動監(jiān)視變量的變量值。其中,活動監(jiān)視變量能夠表征被監(jiān)控目標中功能的運行情況,因此其內存地址所存儲的變量值是可變的。
[0039]步驟S204、在被監(jiān)控目標中注冊至少一個開關。
[0040]本實施例為了便于分析隨機偶發(fā)性問題,選擇在被監(jiān)控目標運行過程中動態(tài)控制日志的輸出。通過在被監(jiān)控目標的至少一個進程中注冊開關,用于出現(xiàn)異常時控制日志信息的輸出。其中注冊開關具體可以包括以下子步驟:
[0041]子步驟S20402、在被監(jiān)控目標的至少一個進程中注冊開關。
[0042]子步驟S20404、接收返回的開關的開關名稱對應的第二內存地址。
[0043]子步驟S20406、所述第二內存地址中配置邏輯量或整數(shù)量作為所述開關名稱對應的開關量。
[0044]子步驟S20408、所述第二內存地址中配置所述被監(jiān)控目標預定數(shù)據結構的內存起始地址作為所述開關名稱對應的開關量,其中,所述數(shù)據結構包含成員值。
[0045]本實施例中,同樣可以采用API如LogSw_RegSw創(chuàng)建開關,在創(chuàng)建開關時創(chuàng)建相應的開關名稱以及其他信息,如PVOID LogSw_RegSw(String strName)。開關用于控制日志信息輸出,可以控制一部分或者全部日志信息,可以基于對該開關的定義確定,例如,采用開關LogSw_All控制全部日志信息,開關LogSw_NetworkCommunicat1n、LogSw_I2cCommunicat1nStatus控制輸出部分日志信息。其中,開關輸出日志功能的有效性不依賴于被監(jiān)控目標的運行狀態(tài)或被監(jiān)控目標是否存在。
[0046]注冊每一個開關都有對應的開關名稱,開關名稱可以用一個字符串表示,比如LogFile10可以為每一個開關名稱分配一個有效的第二內存地址,該第二內存地址中存儲該開關名稱對應的開關量。若注冊某一開關名稱時該開關名稱已注冊,則可以直接返回已分配的第二內存地址,可以基于該第二內存地址內存儲的開關量確定是否輸出日志。
[0047]在第二內存地址中配置開關量,開關量可以被配置為邏輯量或整數(shù)量,針對邏輯量可以設置為O或I,也可以用FALSE或者TRUE等邏輯值表示,通過控制開關量控制日志信息的輸出,例如O或者FALSE代表不輸出日志信息,I或者TRUE代表輸出日志信息。而設置為整數(shù)量可以控制日志信息輸出的級別或是其他信息,比如設置為整數(shù)量包括I至7,開關量可以是I值7中任一值。
[0048]本發(fā)明實施例通過開關在被監(jiān)控目標運行過程出現(xiàn)異常時可以動態(tài)控制日志信息的輸出。但是有時會由于一些原因例如公共部分發(fā)生線程死鎖導致被監(jiān)控目標沒有輸出日志信息,此時為了能夠記錄當時被監(jiān)控目標的運行情況,從而分析出現(xiàn)異常的原因,可以將被監(jiān)控目標的重要數(shù)據結構的內存起始地址作為某個開關名稱對應的開關量,存儲在第二內存地址中,數(shù)據結構包含成員值。其中,由于內存起始地址所占空間比較小,可以保存在第二內存地址中。根據該內存起始地址可獲取預定重要數(shù)據結構的成員值。
[0049]又如,通過“LogSw Library”實現(xiàn)一些簡單操作的API接口,
[0050]Il注冊開關
[0051]PVOID LogSw_RegSw(String strName);
[0052]//取得開關個數(shù),個數(shù)返回到*pSwCnt。
[0053]INT LogSw_GetSwCnt (OUT INT*pSwCnt);
[0054]Η取得單個開關信息,輸入Switch的id,獲取其名稱和量值。
[0055]INT LogSw_GetSwInfo(IN INT iSwId,OUT LPSTR pszSwNameBuf, size_tsizeSwNameBuf,
[0056]OUT INT*pVal);
[0057]第一進程通常僅需使用LogSW_RegSW注冊開關和使用其返回的第二內存地址指向的值進行判斷即可。
[0058]從而在注冊活動監(jiān)視變量和開關之后,能夠通過活動監(jiān)視變量和開關動態(tài)控制日志的輸出。
[0059]本實施例中,為被監(jiān)控目標的日志輸出提供了多種機制,例如通過日志輸出機制控制被監(jiān)控目標在重啟后是否保留先前的開關量等。因此可以在第一進程在初始化時對日志輸出機制進行選擇,包括以下兩個步驟:
[0060]步驟S206、當選擇第一日志輸出機制時,從指定存儲路徑對應的文件中獲取所述開關名稱的開關量。
[0061]步驟S208、當選擇第二日志輸出機制時,將所述開關名稱的開關量配置為初始化值。
[0062]本實施例中,將第一日志輸出機制作為保留原數(shù)據的機制,選擇第一日志輸出機制時被監(jiān)控目標在重啟后仍然保留先前的開關量;而第二日志輸出機制為重啟后回歸到初始化的機制,即選擇第二日志輸出機制時被監(jiān)控目標在重啟后不會保留先前的開關量。
[0063]例如,進程之間的數(shù)據共享采用linux kernel提供的Shared Memory和FileMapping機制,其中,使用Shared Memory機制時,對Log Switch的狀態(tài)不做保存,需要應用程序在初始化時設置初始狀態(tài)值,適合于默認為不記錄任何日志信息的場合;使用FileMapping機制,Log Switch的狀態(tài)數(shù)據會被保存在某一指定存儲路徑對應的文件中,系統(tǒng)重啟后通過指定存儲路徑查找該文件后,可以基于文件使用上次運行的狀態(tài)。當然,針對FileMapping若制定存儲路徑為一臨時目錄,比如/tmp下,也能起到Shared Memory類似的臨時保存的效果。
[0064]將所述SharedMemory作為第二日志輸出機制,將Fi IeMapping作為第一日志輸出機制,則第一進程在初始化時通過選擇使用SharedMemory還是FileMapping(默認SharedMemory),既可以確定該被監(jiān)控目標在前一次的運行過程中配置的開關量是否有效,本次運行過程中是否記錄開關量等,如需要保留前次的開關量則使用FileMapping,反之,每次啟動后都初始化到原始設定的開關量則使用SharedMmeory。即在選擇第一日志輸出機制時,初始從指定存儲路徑對應的文件中獲取所述開關名稱的開關量,運行過程中對于開關量的變更也會存儲到該文件中。而在選擇第二日志輸出機制時,初始將所述開關名稱的開關量配置為初始化值,而在其運行過程中對開關量的變更進行緩存,重啟后緩存的內容會刪除不保留。
[0065]步驟S210、所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新。
[0066]被監(jiān)控目標中的第一進程在運行的過程中能夠實現(xiàn)相應的功能,每個功能可以通過相應的操作步驟執(zhí)行來實現(xiàn),為了檢測各功能的操作步驟是否正常執(zhí)行,可以按照預置規(guī)則對該功能對應的活動監(jiān)視變量的變量值進行更新,通過變量值確定步驟的執(zhí)行過程。例如,第一進程在執(zhí)行被監(jiān)控目標中功能時,依據功能的執(zhí)行步驟對其對應的活動監(jiān)視變量進行更新,如執(zhí)行第一個步驟時,配置*pSoftWatchDogVar = 0,執(zhí)行第二個步驟時配置*pSoftWatchDogVar = 1,依次類推,如總共有6個步驟循環(huán)執(zhí)行,則監(jiān)視活動變量的變量值按照0->1->2->3->4->5->0->1…的規(guī)律依次更新。
[0067]步驟S212、第二進程檢測活動監(jiān)視變量的變量值是否按照預置規(guī)則執(zhí)行更新。
[0068]在第一進程執(zhí)行被監(jiān)控目標中各種功能時,第二進程可以對其監(jiān)控以便在發(fā)生偶發(fā)性問題時能夠及時控制日志輸出,因此,第二進程檢測活動監(jiān)視變量的變量值是否按照預置規(guī)則執(zhí)行更新,即通過對活動監(jiān)視變量的變量值的檢測,確定相應功能是否按照步驟執(zhí)行。
[0069]若是,即第二進程檢測活動監(jiān)視變量的變量值按照預置規(guī)則執(zhí)行更新,表征功能的步驟執(zhí)行正常,可以返回步驟S212繼續(xù)檢測。
[0070]若否,即第二進程檢測活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新,表征相應功能未正常執(zhí)行,可以執(zhí)行步驟S214。
[0071]步驟S214、將所述開關的開關量配置為輸出日志對應的開關量。
[0072]第二進程通過一個API獲得所述活動監(jiān)視變量的變量值,定期觀察其值的變化是否按照實現(xiàn)某功能的操作步驟來進行,其中,第二進程觀察活動監(jiān)視變量:
[0073]PVOID PSoftffatchDogVar = LogSw_RegSw( “soft_watch_dogl”);
[0074]if (I == ^pSoftffatchDogVar)
[0075]…
[0076]else if (2 == ^pSoftffatchDogVar)
[0077]...0
[0078]如上例循環(huán)更新的規(guī)律為:0->1->2->3->4->5->0->1...。例如在執(zhí)行完第二步驟時,變量值為1,此后應該執(zhí)行第三步驟相應變量值調整為2,但是由于某些問題導致變量值始終保持為1,即變量值沒有按照預置規(guī)則執(zhí)行更新,此時可能是被監(jiān)控目標出現(xiàn)問題,將所述開關的開關量配置為輸出日志對應的開關量。若活動監(jiān)視變量的變量值沒有按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量,例如開關量為邏輯量時,將開關量配置為I或者TRUE,開關量為整數(shù)量時,將開關量置為最大化調試信息的值。
[0079]例如,改變開關量的值可以通過如下方式實現(xiàn),INT LogSw_SetSw(String, strName, INT iValue)。又如通過提供一個實用工具程序,從命令行查詢和改變開關量的值,比如:LogSw - list,又如 LogSw〈Name> [〈Value〉]。
[0080]從而通過改變被監(jiān)控目標中各種開關的變量值控制日志輸出,其中,但是各異常活動監(jiān)視變量對應配置開關與實際需求相關,如全部配置為輸出日志對應的開關量,或者配置與該活動監(jiān)視變量相關位置的開關為輸出日志對應的開關量,以便于后續(xù)依據日志排查問題。
[0081]步驟S216、所述第一進程在運行時若檢測到所述開關為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。
[0082]第一進程運行時檢測開關的開關量,若檢測到所述開關為輸出日志對應的開關量,被監(jiān)控目標輸出這些開關所控制的日志信息。根據輸出的日志信息就可以識別問題發(fā)生的局部范圍點。
[0083]本實施例中,第一進程對被監(jiān)控目標中開關的引用判斷不超過2個CPU指令,其中,通常情況下為一個if條件判斷語句,延伸到CPU指令就是一條條件判斷跳轉指令,使得這種性能消耗幾乎可以忽略不計。
[0084]本發(fā)明的一個可選實施例,當被監(jiān)控目標應該輸出相應的日志信息,卻沒有任何日志信息輸出時,還包括:
[0085]若被監(jiān)控目標沒有任何日志信息輸出,第二進程查找存儲預定數(shù)據結構的內存起始地址的開關名稱。讀取出所述開關名稱中的預定數(shù)據結構的內存起始地址。獲取該預定數(shù)據結構的成員值,得到被監(jiān)控目標的相關信息。將所述被監(jiān)控目標的相關信息作為日志
?目息O
[0086]若被監(jiān)控目標沒有任何日志信息輸出,很可能是問題發(fā)生在公共部分例如線程死鎖。由于之前已經把被監(jiān)控目標重要預定數(shù)據結構的內存起始地址作為某個開關名稱對應的開關量。因此第二進程可以查找存儲預定數(shù)據結構的內存起始地址的開關名稱。
[0087]根據開關名稱到相應的第二內存地址中讀取出所述開關名稱中的預定數(shù)據結構的內存起始地址。根據上述內存起始地址獲取該預定數(shù)據結構的成員值,得到被監(jiān)控目標的相關信息。上述被監(jiān)控目標的相關信息代表被監(jiān)控目標的運行情況,將所述被監(jiān)控目標的相關信息作為日志信息。
[0088]本發(fā)明的另一個可選實施例,所述若被監(jiān)控目標沒有任何日志信息輸出,修改指定數(shù)據結構的成員值或重啟被監(jiān)控目標,輸出日志信息。
[0089]若被監(jiān)控目標沒有任何日志信息輸出,很可能問題發(fā)生在公共部分例如線程死鎖。此時也可以對第一進程進行追蹤,確定出現(xiàn)問題的數(shù)據結構修改其成員值。從而解決公共部分的問題如線程死鎖等問題使得被監(jiān)控目標運行,再按上述步驟正常輸出日志信息。
[0090]通過上述步驟獲取到日志信息后,可以根據日志信息分析被監(jiān)控目標的問題,從而盡力解決非調試狀態(tài)下的錯誤排查和處理。
[0091 ] 綜上所述,通過預先把被監(jiān)控目標預定數(shù)據結構的內存起始地址作為一個開關名稱的開關量,若被監(jiān)控目標沒有輸出日志信息,第二進程可以追蹤被監(jiān)控目標,讀取出指定的數(shù)據結構,得到被監(jiān)控目標相關信息作為日志信息。并且可以修改結構體的成員值,或者重啟被監(jiān)控目標,解決被監(jiān)控目標死鎖,從而使被監(jiān)控目標可以正常輸出日志信息。
[0092]需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。
[0093]參照圖3,示出了本發(fā)明一種日志信息的處理裝置實施例的結構框圖,具體可以包括如下模塊:
[0094]創(chuàng)建與注冊模塊302,監(jiān)視模塊304,配置模塊306,以及,輸出模塊308。
[0095]下面分別介紹各模塊的功能以及各模塊之間的關系。
[0096]創(chuàng)建與注冊模塊302,用于在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出。
[0097]監(jiān)視模塊304,用于所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新。
[0098]配置模塊306,用于第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量,其中,所述第二進程用于對第一進程進行監(jiān)控。
[0099]輸出模塊308,用于所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。
[0100]綜上所述,在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,能夠在活動監(jiān)視變量出現(xiàn)異常時改變開關的開關量,使開關的開關量配置為輸出日志對應的開關量,在被監(jiān)控目標運行的相應過程時輸出日志信息。從而在運行過程中動態(tài)控制被監(jiān)控目標中日志信息記錄和輸出,能夠有效的對隨機偶發(fā)性問題進行記錄以便后續(xù)分析使用。
[0101]參照圖4,示出了本發(fā)明另一種日志信息的處理裝置實施例的結構框圖。
[0102]創(chuàng)建與注冊模塊302,用于在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出。
[0103]本發(fā)明一個可選實施例中,所述創(chuàng)建與注冊模塊302包括:創(chuàng)建子模塊3022和注冊子模塊3024,其中:
[0104]所述創(chuàng)建子模塊3022,用于在被監(jiān)控目標的第一進程中創(chuàng)建活動監(jiān)視變量;接收返回的所述活動監(jiān)視變量對應的第一內存地址;所述第一內存地址中配置所述活動監(jiān)視變量的變量值。
[0105]所述注冊子模塊3024,用于在被監(jiān)控目標的至少一個進程中注冊開關;接收返回的開關名稱對應的第二內存地址;所述第二內存地址中配置邏輯量或整數(shù)量作為所述開關名稱對應的開關量。
[0106]所述注冊子模塊3024,還用于所述第二內存地址中配置所述被監(jiān)控目標預定數(shù)據結構的內存起始地址作為所述開關名稱對應的開關量,其中,所述數(shù)據結構包含成員值。
[0107]選擇模塊310,用于所述第一進程在初始化時選擇日志輸出機制;當選擇第一日志輸出機制時,從指定存儲路徑對應的文件中獲取所述開關名稱的開關量;以及當選擇第二曰志輸出機制時,將所述開關名稱的開關量配置為初始化值。
[0108]監(jiān)視模塊304,用于所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新。
[0109]配置模塊306,用于第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量。
[0110]輸出模塊308,用于所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。
[0111]本發(fā)明的一個可選實施例中,所述裝置還包括第一調整模塊312以及第二調整模塊314,其中:
[0112]第一調整模塊,用于若被監(jiān)控目標沒有任何日志信息輸出,第二進程查找存儲預定數(shù)據結構的內存起始地址的開關名稱;讀取出所述開關名稱中的預定數(shù)據結構的內存起始地址;獲取該預定數(shù)據結構的成員值,得到被監(jiān)控目標的相關信息;將所述被監(jiān)控目標的相關信息作為日志信息。
[0113]第二調整模塊314,用于所述若被監(jiān)控目標沒有任何日志信息輸出,修改指定數(shù)據結構的成員值或重啟被監(jiān)控目標,輸出日志信息。
[0114]綜上所述,通過預先把被監(jiān)控目標預定數(shù)據結構的內存起始地址作為一個開關名稱的開關量,若被監(jiān)控目標沒有輸出日志信息,第二進程可以追蹤被監(jiān)控目標,讀取出指定的數(shù)據結構,得到被監(jiān)控目標相關信息作為日志信息。并且可以修改結構體的成員值,或者重啟被監(jiān)控目標,解決被監(jiān)控目標死鎖,從而使被監(jiān)控目標可以正常輸出日志信息。
[0115]對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
[0116]本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
[0117]本領域內的技術人員應明白,本發(fā)明實施例的實施例可提供為方法、裝置、或計算機程序產品。因此,本發(fā)明實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0118]本發(fā)明實施例是參照根據本發(fā)明實施例的方法、終端設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據處理終端設備的處理器以產生一個機器,使得通過計算機或其他可編程數(shù)據處理終端設備的處理器執(zhí)行的指令產生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0119]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0120]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據處理終端設備上,使得在計算機或其他可編程終端設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的處理,從而在計算機或其他可編程終端設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0121]盡管已描述了本發(fā)明實施例的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明實施例范圍的所有變更和修改。
[0122]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
[0123]以上對本發(fā)明所提供的一種日志信息的處理方法和一種日志信息的處理裝置,進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。
【主權項】
1.一種日志信息的處理方法,其特征在于,所述的方法包括: 在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出; 所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新; 第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量,其中,所述第二進程用于對第一進程進行監(jiān)控; 所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。2.根據權利要求1所述的方法,其特征在于,在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量的步驟包括: 在被監(jiān)控目標的第一進程中創(chuàng)建活動監(jiān)視變量; 接收返回的所述活動監(jiān)視變量對應的第一內存地址; 所述第一內存地址中配置所述活動監(jiān)視變量的變量值。3.根據權利要求1所述的方法,其特征在于,在被監(jiān)控目標中注冊至少一個開關的步驟包括: 在被監(jiān)控目標的至少一個進程中注冊開關; 接收返回的開關名稱對應的第二內存地址; 所述第二內存地址中配置邏輯量或整數(shù)量作為所述開關名稱對應的開關量。4.根據權利要求3所述的方法,所述接收返回的開關的開關名稱對應的第二內存地址之后,還包括: 所述第二內存地址中配置所述被監(jiān)控目標預定數(shù)據結構的內存起始地址作為所述開關名稱對應的開關量,其中,所述數(shù)據結構包含成員值。5.根據權利要求4所述的方法,還包括: 若被監(jiān)控目標沒有任何日志信息輸出,第二進程查找存儲預定數(shù)據結構的內存起始地址的開關名稱; 讀取出所述開關名稱中的預定數(shù)據結構的內存起始地址; 獲取該預定數(shù)據結構的成員值,得到被監(jiān)控目標的相關信息; 將所述被監(jiān)控目標的相關信息作為日志信息。6.根據權利要求5所述的方法,還包括: 所述若被監(jiān)控目標沒有任何日志信息輸出,修改指定數(shù)據結構的成員值或重啟被監(jiān)控目標,輸出日志信息。7.根據權利要求4所述的方法,還包括: 所述第一進程在初始化時選擇日志輸出機制; 當選擇第一日志輸出機制時,從指定存儲路徑對應的文件中獲取所述開關名稱的開關量; 當選擇第二日志輸出機制時,將所述開關名稱的開關量配置為初始化值。8.—種日志信息的處理裝置,其特征在于,所述的裝置包括: 創(chuàng)建與注冊模塊,用于在被監(jiān)控目標中創(chuàng)建活動監(jiān)視變量并注冊至少一個開關,其中,所述開關用于控制日志輸出; 監(jiān)視模塊,用于所述被監(jiān)控目標的第一進程按照預置規(guī)則對所述活動監(jiān)視變量的變量值進行更新; 配置模塊,用于第二進程檢測到所述活動監(jiān)視變量的變量值未按照預置規(guī)則執(zhí)行更新時,將所述開關的開關量配置為輸出日志對應的開關量,其中,所述第二進程用于對第一進程進行監(jiān)控; 輸出模塊,用于所述第一進程在運行時若檢測到所述開關的開關量為輸出日志對應的開關量時,被監(jiān)控目標輸出相應的日志信息。9.根據權利要求8所述的裝置,其特征在于,所述創(chuàng)建與注冊模塊,包括: 創(chuàng)建子模塊,用于在被監(jiān)控目標的第一進程中創(chuàng)建活動監(jiān)視變量;接收返回的所述活動監(jiān)視變量對應的第一內存地址;所述第一內存地址中配置所述活動監(jiān)視變量的變量值。10.根據權利要求8所述的裝置,其特征在于,所述創(chuàng)建與注冊模塊,包括: 注冊子模塊,用于在被監(jiān)控目標的至少一個進程中注冊開關;接收返回的開關名稱對應的第二內存地址;所述第二內存地址中配置邏輯量或整數(shù)量作為所述開關名稱對應的開關量。11.根據權利要求10所述的裝置,其特征在于, 所述注冊子模塊,還用于所述第二內存地址中配置所述被監(jiān)控目標預定數(shù)據結構的內存起始地址作為所述開關名稱對應的開關量,其中,所述數(shù)據結構包含成員值。12.根據權利要求11所述的裝置,其特征在于,還包括: 第一調整模塊,若被監(jiān)控目標沒有任何日志信息輸出,第二進程查找存儲預定數(shù)據結構的內存起始地址的開關名稱;讀取出所述開關名稱中的預定數(shù)據結構的內存起始地址;獲取該預定數(shù)據結構的成員值,得到被監(jiān)控目標的相關信息;將所述被監(jiān)控目標的相關信息作為日志信息。13.根據權利要求12所述的裝置,其特征在于,還包括: 第二調整模塊,用于所述若被監(jiān)控目標沒有任何日志信息輸出,修改指定數(shù)據結構的成員值或重啟被監(jiān)控目標,輸出日志信息。14.根據權利要求11所述的裝置,其特征在于,還包括: 選擇模塊,用于所述第一進程在初始化時選擇日志輸出機制;當選擇第一日志輸出機制時,從指定存儲路徑對應的文件中獲取所述開關名稱的開關量;以及當選擇第二日志輸出機制時,將所述開關名稱的開關量配置為初始化值。
【文檔編號】G06F11/34GK105975383SQ201510626751
【公開日】2016年9月28日
【申請日】2015年9月28日
【發(fā)明人】肖榮權
【申請人】樂視致新電子科技(天津)有限公司