两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種計算機日志的管理方法

文檔序號:6393901閱讀:193來源:國知局
專利名稱:一種計算機日志的管理方法
技術(shù)領域
本發(fā)明涉及計算機管理技術(shù),具體涉及一種計算機日志的管理方法。
背景技術(shù)
計算機日志是在計算機系統(tǒng)運行過程中由系統(tǒng)自身產(chǎn)生或者由對該系統(tǒng)進行監(jiān)控的監(jiān)控程序所產(chǎn)生的經(jīng)過高度提煉的描述信息,這些描述信息主要描述了系統(tǒng)所進行的關(guān)鍵操作以及系統(tǒng)在運行過程中所發(fā)生的錯誤和異常等。一般而言,獨立的計算機系統(tǒng)都有自己的日志,這里的計算機系統(tǒng)可以是計算機操作系統(tǒng),也可以是應用程序,或者是計算機其他層次的系統(tǒng)。通過對系統(tǒng)日志的分析,可以了解系統(tǒng)在運行中經(jīng)常出現(xiàn)的問題,從而可以有針對性地改善對系統(tǒng)的運營維護,進而提高系統(tǒng)運行的安全和效率。
用戶對計算機日志所進行的管理主要是日志檢索。這是因為隨著系統(tǒng)運行時間的增加,日志文件也隨之越來越龐大,即使部分日志對其自身大小有一定限制,但是其包容的描述信息量也是非常大的。所以,為了對日志進行有效管理,就有必要過濾掉用戶不關(guān)心的內(nèi)容,而保留用戶真正關(guān)心的少量內(nèi)容,例如警告信息或者錯誤信息等。這種過濾是通過設置檢索規(guī)則并根據(jù)檢索規(guī)則對日志進行檢索來進行的。
目前,在計算機機群系統(tǒng)中,一般是由一臺具有管理功能的主機對該機群系統(tǒng)中的其他所有主機的日志實行集中的管理,但是由于不同的主機的操作系統(tǒng)和應用程序都可能不同,而每一種操作系統(tǒng)和應用程序都可能有自己獨特格式的日志,也就是說,各種系統(tǒng)日志的格式是不統(tǒng)一的,這樣就需要對不同系統(tǒng)日志分別進行不同的管理。在管理主機中,需要針對不同的系統(tǒng)日志設置不同的管理工具,然后再使用不同的管理工具分別管理相應的系統(tǒng)日志,從而使得整個管理過程非常復雜,增加了運營維護的困難。
另外,在系統(tǒng)管理員對日志文件進行檢索時,都需要預先設置檢索規(guī)則。檢索規(guī)則的設置需要考慮多方面的因素,例如,如果規(guī)則過于簡單,那么無法過濾掉用戶不關(guān)心的信息;如果規(guī)則過于復雜,又增加了管理操作的難度。因此對系統(tǒng)管理員來說,設置檢索規(guī)則需要付出很多時間和精力。而對于不同格式的日志,需要分別設置檢索規(guī)則,從而進一步增加了管理的復雜性。
目前,一般是將被管理主機的日志傳輸?shù)焦芾碇鳈C,由管理主機進行檢索規(guī)則的設置并執(zhí)行相應檢索操作,這樣可以避免檢索規(guī)則的下發(fā)。但是如果計算機機群系統(tǒng)中被管理主機眾多,這些被管理主機都需要將自己的日志發(fā)送給管理主機,這樣需要占用計算機機群大量的網(wǎng)絡帶寬。而管理主機需要串行執(zhí)行對每一個被管理主機的日志文件檢索,因此極大地降低了管理主機的工作效率。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的一個目的是提供一種計算機日志的管理方法,可以統(tǒng)一不同日志文件的格式,從而提高系統(tǒng)運行維護的方便性,以及提高日志管理的效率。
本發(fā)明的上述目的是通過如下的技術(shù)方案予以實現(xiàn)的一種計算機日志的管理方法,至少包括如下步驟a.在計算機上保存所形成的計算機日志文件;b.將不同計算機日志文件所包含的不同格式的日志記錄解析成具有統(tǒng)一格式的日志記錄;c.對統(tǒng)一格式的日志記錄進行管理。
在上述方法中,步驟c中的管理包括在計算機上顯示統(tǒng)一格式的日志記錄的步驟。并且可以進一步包括篩選統(tǒng)一格式的日志記錄的步驟。
其中篩選步驟包括判斷是否已經(jīng)定義了檢索規(guī)則,如果是,執(zhí)行下一步;否則定義并保存檢索規(guī)則,然后執(zhí)行下一步;創(chuàng)建檢索結(jié)果緩沖區(qū),并創(chuàng)建包含統(tǒng)一格式的日志記錄的日志數(shù)據(jù)源對象;從日志數(shù)據(jù)源對象中順序讀取一條日志記錄,使用檢索規(guī)則匹配讀取的日志記錄,將匹配后得到的日志記錄填充到檢索結(jié)果緩沖區(qū),然后順序讀取下一條日志記錄;在匹配了所有日志記錄之后,釋放日志數(shù)據(jù)源對象,在計算機上顯示匹配后得到的日志記錄,釋放檢索結(jié)果緩沖區(qū)。
這里的檢索規(guī)則可以是正向檢索規(guī)則,這樣匹配后得到的日志記錄是滿足正向檢索規(guī)則的日志記錄;或者,檢索規(guī)則可以是反向檢索規(guī)則,匹配后得到的日志記錄是除了滿足反向檢索規(guī)則的日志記錄之外的所有日志記錄。
本發(fā)明的計算機日志管理方法可以應用于單機,也可以應用于計算機機群。在應用于計算機機群時,定義檢索規(guī)則的步驟在管理主機上進行,保存計算機日志文件、解析日志記錄、創(chuàng)建和釋放檢索結(jié)果緩沖區(qū)、創(chuàng)建和釋放日志數(shù)據(jù)源對象以及讀取并匹配日志記錄的步驟在被管理主機上進行,在管理主機定義了檢索規(guī)則之后本發(fā)明進一步包括將定義的檢索規(guī)則或用于標識檢索規(guī)則的標識信息下發(fā)給被管理主機的步驟,被管理主機在匹配了所有日志記錄之后進一步包括將匹配后得到的日志記錄發(fā)送給管理主機的步驟,顯示匹配后得到的日志記錄是在管理主機上進行的。
此時,在管理主機保存了檢索規(guī)則之后進一步包括為所保存的檢索規(guī)則設置一個標識信息,并將檢索規(guī)則和對應的標識信息發(fā)送給被管理主機由被管理主機進行保存,將用于標識檢索規(guī)則的標識信息下發(fā)給被管理主機。
在本發(fā)明中,為不同種類的日志文件分別定義相應的檢索規(guī)則。
本發(fā)明的解析步驟包括b1.為不同格式的日志記錄定義統(tǒng)一的日志格式;b2.建立用于保存解析后具有統(tǒng)一格式的日志記錄的當前日志記錄緩沖區(qū),并為每一種日志文件分別設置相應的解析方法;
b3.打開日志文件,讀取日志文件中的日志記錄并使用步驟b2中的解析方法分別對每一條日志記錄解析成具有步驟b1所述的統(tǒng)一的日志格式的日志記錄;b4.將解析后具有統(tǒng)一格式的日志記錄保存在所述當前日志記錄緩沖區(qū)中。
在上述方法中,步驟b3中讀取日志記錄可以是每次從保存在計算機磁盤上的日志文件中讀取一條日志記錄。
在上述方法中,步驟b3中讀取日志記錄和解析過程可以包括如下步驟b31.創(chuàng)建一個空的預讀緩沖區(qū);b32.從保存在計算機磁盤上的日志文件中一次讀取和預讀緩沖區(qū)緩沖能力相應的大于等于1條的日志記錄并填充到預讀緩沖區(qū);b33.從預讀緩沖區(qū)中讀取一條日志記錄并進行解析,將解析后的結(jié)果保存到當前日志記錄緩沖區(qū)中,然后從預讀緩沖區(qū)中讀取下一條日志記錄;b34.在已經(jīng)讀取并解析了當前預讀緩沖區(qū)中的所有日志記錄之后,重復執(zhí)行步驟b32,并使用新讀取的日志記錄替代預讀緩沖區(qū)中原有的日志記錄,然后重復執(zhí)行步驟b33,直到已經(jīng)讀取并解析了該日志文件中的所有日志記錄;b35.釋放預讀緩沖區(qū)。
在步驟b31之前可以進一步包括判斷是否已經(jīng)創(chuàng)建一個空的預讀緩沖區(qū)的步驟,如果是,直接執(zhí)行步驟b32,否則順序執(zhí)行步驟b31和b32。另外,在步驟b32之前進一步包括判斷日志文件中是否包含日志記錄的步驟,如果是,執(zhí)行步驟b32,否則結(jié)束本流程。
在上述方法中,在步驟b2中通過動態(tài)加載函數(shù)的形式設置解析方法。
在上述方法中,步驟b1統(tǒng)一的日志格式包括用于標識日志文件的描述對象的日志目標、用于標識日志記錄生成時間的產(chǎn)生時間、用于標識日志記錄重要程度的日志級別、用于標識日志對象的詳細描述信息的日志內(nèi)容以及用于標識不屬于上述四項的其他內(nèi)容的其它信息。其中,日志目標的描述以及日志目標之間的相互關(guān)系在系統(tǒng)運行之前預先定義,并保存在一個單獨的配置文件中。并且日志目標之間的相互關(guān)系通過可擴展的日志目標樹的形式定義。日志級別通過表示日志記錄重要程度的非負整數(shù)和對該重要程度的文字表述組成的一個二元組來定義。
通過本發(fā)明的技術(shù)方案可以看出,對于保存在計算機上的不同日志文件所包含的具有不同格式的日志記錄,通過采取不同的解析方法解析成具有統(tǒng)一格式的日志記錄,從而使本發(fā)明可以在一個管理主機上對所有被管理主機上的所有日志文件進行集中統(tǒng)一的管理,極大地提高了日志管理的方便性,降低了管理操作的難度,提高了管理效率。
同時,本發(fā)明還可以對具有統(tǒng)一格式的日志記錄針對不同的用戶需求進行篩選,然后將篩選出的日志記錄顯示給用戶,使用戶可以迅速地確定所關(guān)心的信息,進一步提高了管理效率。在進行篩選時可以由計算機機群系統(tǒng)中的被管理主機并行進行,從而提高了篩選速度,并因此提高了管理主機的管理效率。
另外,除了能對眾多的不同種類的日志文件進行統(tǒng)一管理之外,本發(fā)明具有良好的擴展性,不需要對現(xiàn)有計算機機群系統(tǒng)進行大規(guī)模修改,就可以極大地提高機群系統(tǒng)的管理效率。另外,對于新增種類的日志文件,只需添加相應的解析方法即可進行管理,因此非常容易擴展。


圖1是根據(jù)本發(fā)明的計算機日志管理方法的總體流程圖。
圖2是根據(jù)本發(fā)明的計算機日志管理方法的操作模型示意圖。
圖3是一個操作系統(tǒng)日志的日志目標樹的示意圖。
圖4是圖3經(jīng)過擴展后的日志目標樹的示意圖。
圖5是根據(jù)本發(fā)明的統(tǒng)一日志格式的流程圖。
圖6是根據(jù)本發(fā)明的解析方法動態(tài)加載過程示意圖。
圖7是根據(jù)本發(fā)明的使用預讀緩沖區(qū)技術(shù)進行日志記錄讀取的流程圖。
圖8是根據(jù)本發(fā)明的訪問有預讀緩存的日志記錄的方法示意圖。
圖9是根據(jù)本發(fā)明的日志篩選層處理流程圖。
具體實施例方式
下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。
本發(fā)明主要通過對不同的日志文件所包含的不同格式的日志記錄使用相應的解析方法解析成具有相同統(tǒng)一格式的日志記錄,然后再進行相應處理。圖1示出了本發(fā)明的總體流程,從圖1可以看出,本發(fā)明的方法主要包括如下步驟步驟101在計算機機群的被管理主機中保存該被管理主機所具有的日志文件。
步驟102解析被管理主機所具有的日志文件,將不同日志文件中所包含的不同格式的日志記錄轉(zhuǎn)換為具有統(tǒng)一格式的日志記錄。
步驟103對統(tǒng)一格式的日志記錄進行篩選,過濾對用戶來說沒有用處的日志記錄,挑選出用戶關(guān)心的日志記錄。
步驟104將挑選出的日志記錄所包含的信息顯示給用戶。
為了實現(xiàn)本發(fā)明的總體流程,本發(fā)明在邏輯上將日志管理模型分為如圖2所示的四個層次,從底層向上分別為日志存儲層、日志解析層、日志篩選層和日志表示層。在這四個層次中,日志存儲層用于保存和維護各種日志文件,它展現(xiàn)給上層的是各種不同格式的日志文件;日志解析層負責將各種格式的日志文件映射為具有統(tǒng)一格式的日志數(shù)據(jù)源,這里的日志數(shù)據(jù)源將在后面詳細說明;日志篩選層負責遍歷日志數(shù)據(jù)源中的每一條日志記錄,并根據(jù)預先設置的過濾規(guī)則去掉無用的日志信息,挑選出用戶真正關(guān)心的日志信息,然后將挑選出的日志信息發(fā)送給日志表示層;日志表示層負責配置日志文件的基本信息以及前述預先設置的過濾規(guī)則,向下發(fā)送日志查詢命令,并將下層上傳的日志信息顯示給用戶。
在本發(fā)明的一個優(yōu)選實施例中,日志存儲層、日志解析層和日志篩選層位于被管理主機,而日志表示層位于管理主機。也就是說,日志存儲層、日志解析層和日志篩選層所負責的操作在被管理主機上執(zhí)行,日志表示層所負責的操作在管理主機上執(zhí)行。當然,本發(fā)明并不局限于這一種情況,除了日志存儲層和日志表示層分別位于被管理主機和管理主機之外,日志解析層和日志篩選層可以同時位于管理主機上,或者日志解析層位于被管理主機上,而日志篩選層位于管理主機上。被管理主機和管理主機之間可以通過TCP/IP等通信協(xié)議進行通信。
下面結(jié)合前述四個層次對本發(fā)明的總體流程進行更進一步的說明。
前面已經(jīng)說明,在一個計算機機群中,一般包含一個管理主機和多個被管理主機,該管理主機對多個被管理主機的日志文件進行管理。在每一個被管理主機中都可能保存了多個日志文件,這些日志文件可能對應于計算機操作系統(tǒng),可能對應于應用程序,也可能對應于計算機其他層次的系統(tǒng)。而且,這些計算機日志一般具有不同的格式。因此在本發(fā)明中,首先在步驟101保存這些具有不同格式的不同類型的計算機日志文件。
當系統(tǒng)管理員需要查看某一個具體的計算機日志文件中包含的信息時,可以通過管理主機的操作界面發(fā)送相應的指令,管理主機將該指令發(fā)送到被管理主機,被管理主機接收到上述指令后即開始對于指令所要求的具體計算機日志文件執(zhí)行步驟102?;蛘?,可以預先在被管理主機或管理主機上設定一個定時器,當?shù)竭_該定時器設定的時間后,被管理主機對于所有的計算機日志或預先設定的計算機日志文件執(zhí)行步驟102。這兩種觸發(fā)方式和現(xiàn)有技術(shù)相同,這里不再詳細說明。
在步驟102中,為了對不同格式的日志文件進行統(tǒng)一、集中的管理,首先定義了一種統(tǒng)一的日志格式。具體地說,任何一個日志文件都可以看成是一個記錄集,該記錄集中的每一條日志記錄都代表了一條日志信息,這個日志信息可以是一串單行字符流,也可以是一串多行字符流。在本發(fā)明的一個較佳實施例中,根據(jù)對各種日志記錄的分析,可以將每一條日志記錄分解為如下五個字段日志目標、產(chǎn)生時間、日志級別、日志內(nèi)容和其它信息。
日志目標也可以稱作日志類型,它代表日志文件的被描述對象,也就是處于某種運行狀態(tài)的對象,例如是計算機操作系統(tǒng)本身,或者是操作系統(tǒng)的一個組成部分。每個日志文件可能包含多個日志目標,例如Windows的系統(tǒng)日志,它可能有一條日志描述了某個硬件損壞,還有一條日志描述某個系統(tǒng)服務被停止,這里的硬件與系統(tǒng)服務都是一個日志目標。當然,一個日志文件也可能只包含一個日志目標。在包含多個日志目標的情況下,這些日志目標組成了一個如圖3所示的樹狀結(jié)構(gòu)。如圖3所示,Windows操作系統(tǒng)日志包含三個日志目標系統(tǒng)日志、應用日志和安全日志,它們組成了一個包含三個葉子節(jié)點的日志目標樹。日志目標的描述以及它們之間的相互關(guān)系需要在系統(tǒng)運行之前預先定義,并保存在一個單獨設置的配置文件中。
這里之所以要建立日志目標,是希望通過區(qū)分不同的日志目標來對日志內(nèi)容進行分類,以方便日后的查詢。因此,用戶可以在原始日志文件格式的基礎上,結(jié)合自己的管理需求靈活地定義日志目標。上述在原始日志文件格式的基礎上是指系統(tǒng)能夠通過日志記錄中的標志性信息的分析確定該記錄所描述的對象,有了這個基礎,用戶就可以根據(jù)自己的需求隨時在廣度和深度上擴展現(xiàn)有配置,定義更為詳細準確的日志目標。
例如,通過對圖3所示的Windows應用日志記錄的分析可以進一步確定應用1的日志和應用2的日志,則可以將圖3所示的日志目標樹擴展為圖4所示的日志目標樹,也就是在應用日志的葉子節(jié)點下再建立兩個下一級節(jié)點應用1日志和應用2日志。
為了在系統(tǒng)檢索時對時間進行比較,定義了日志的產(chǎn)生時間。日志的產(chǎn)生時間是一個具有統(tǒng)一格式的表明日志產(chǎn)生時間的數(shù)值字符串,其格式例如可以是<年><月><日><時><分><秒>。其中用4個字符表示年份,例如“2003”表示2003年;用2個字符表示月份,例如“12”表示12月;用2個字符表示具體是哪一天,例如“31”表示31日;用2個字符表示小時,例如“12”表示12點;用2個字符表示分鐘,例如“00”表示零分;用2個字符表示秒鐘,例如“38”表示38秒鐘。這樣整個數(shù)值字符串“20031231120038”表示這個日志的產(chǎn)生時間是2003年12月31日12時0分38秒。
每種日志文件可能具有不同的時間精度,在本發(fā)明中,為了統(tǒng)一,系統(tǒng)需要對不同的時間精度統(tǒng)一成上述精度。例如,可以在原始日志格式轉(zhuǎn)換為統(tǒng)一日志格式時對于精度不能達到的時間位補零,而對于原始精度超過上述精度的則直接去掉更高精度的數(shù)值。例如,某一條日志記錄的原始記錄產(chǎn)生時間是2003年12月31日12時,則將其分鐘和秒鐘位補零,修改后的產(chǎn)生時間則變成2003年12月31日12時0分0秒。而如果某一條日志記錄的原始記錄產(chǎn)生時間是2003年12月31日12時0分38秒30毫秒,則直接去掉毫秒信息,修改后的產(chǎn)生時間則變成2003年12月31日12時0分38秒。
日志級別表明日志記錄的重要程度,可以用一個二元組(level_id,level_desc)來定義日志級別。其中,level_id是一個表明重要程度的非負整數(shù),數(shù)值越小表明日志的重要程度越高。Level_desc是對一個級別的文字描述。在本發(fā)明中,可以為每種日志文件定義不同的日志級別。
日志內(nèi)容是對日志對象的詳細描述信息。其它信息則包含了一個日志文件中不屬于上述四項的其它內(nèi)容。
在如上定義了統(tǒng)一的日志格式之后,就可以將日志文件的具體日志記錄轉(zhuǎn)換為具有統(tǒng)一格式的日志記錄。具體地說,包括圖5所示的如下步驟。
在步驟501中,預先建立當前日志記錄緩沖區(qū),并預先為每一種日志文件建立一種解析方法。這里的當前日志記錄緩沖區(qū)用于保存后面經(jīng)過解析的已經(jīng)具有統(tǒng)一日志格式的日志信息,這一點在后面將有更進一步的說明。另外,由于前面已經(jīng)提到,每一種日志文件都具有不同格式,要對不同格式的日志文件解析成統(tǒng)一格式的日志文件,就需要對每一種不同格式的日志文件分別建立對應的解析方法。在實際操作中,可以利用動態(tài)加載函數(shù)的方式建立解析方法,也就是將每一種方法形成為一個動態(tài)加載函數(shù)(parse函數(shù)),并保存在系統(tǒng)中。對于不同的操作系統(tǒng)平臺,使用不同的動態(tài)函數(shù)加載技術(shù),例如對于Windows平臺,使用動態(tài)連接庫技術(shù)(.dll),而對于Linux平臺,則使用動態(tài)庫技術(shù)(.so)。
解析方法動態(tài)加載的過程如圖6所示。每種日志文件都有自己專用的包含了一個解析函數(shù)的動態(tài)庫,并且用日志文件名作為動態(tài)庫的庫文件名,從而可以實現(xiàn)“按名加載”。解析函數(shù)的動態(tài)加載過程是在對象的構(gòu)造函數(shù)的過程中完成的。
在步驟502中,當需要進行格式統(tǒng)一時,首先打開一個具體日志文件。在本發(fā)明中,可以預先定義一個日志數(shù)據(jù)源對象,此時可以將日志文件的打開和關(guān)閉與日志數(shù)據(jù)源對象的創(chuàng)建和刪除保持同步,也就是說,在創(chuàng)建對象時打開文件,在刪除對象時關(guān)閉文件。這些文件管理操作對于用戶來說是透明的。日志文件名可以作為對象構(gòu)造函數(shù)的輸入?yún)?shù)用于打開文件,得到的文件描述符可以保存在成員變量中用于后續(xù)對文件的操作。這里的數(shù)據(jù)源是對底層數(shù)據(jù)封裝后形成的數(shù)據(jù)訪問接口。
在步驟503中,對日志文件通過調(diào)用動態(tài)加載函數(shù)進行解析,然后將解析后的日志信息保存到當前日志記錄緩沖區(qū)中。
其中對于步驟503,由于日志管理操作只需要對日志進行從頭到尾的順序訪問,因此日志數(shù)據(jù)源僅提供了順序讀取日志記錄的成員方法,也就是next方法。每調(diào)用一次next方法,日志數(shù)據(jù)源對象的當前日志記錄緩沖區(qū)得到刷新。next方法是對parse函數(shù)的封裝,這樣可以隱藏操作的細節(jié)。由于next方法一次只能刷新緩存一條記錄,因此parse函數(shù)也只需要每次從日志文件中讀取一條日志記錄所對應的數(shù)據(jù)區(qū)即可。也就是說,每次從保存在磁盤上的日志文件中讀取一條日志記錄,然后進行解析的過程,然后將這一次解析后形成的日志信息保存在當前日志緩沖記錄區(qū)中。這個過程需要頻繁地訪問磁盤文件,降低了操作效率,為此,本發(fā)明還提供了另外一個實施例,也就是使用“預讀緩沖區(qū)”技術(shù),下面將對此詳細說明。
預讀緩沖區(qū)是指開辟一個足夠大的緩沖區(qū),用于一次性地從日志文件中讀取盡可能多的數(shù)據(jù)。每次next方法調(diào)用parse函數(shù)時,parse函數(shù)只需要從預讀緩沖區(qū)讀取數(shù)據(jù)并進行相應的解析即可,只有在緩沖區(qū)為空時parse函數(shù)才再次進行文件讀操作,這樣可以大大減少對磁盤文件的訪問次數(shù)。這里,所有對緩沖區(qū)的操作都封裝在parse函數(shù)中。
使用預讀緩沖區(qū)技術(shù)包括四個基本步驟創(chuàng)建緩沖區(qū)、填充緩沖區(qū)、讀取緩沖區(qū)和釋放緩沖區(qū)。在一次操作過程中,當需要讀取日志文件的數(shù)據(jù)時,首先創(chuàng)建一個緩沖區(qū),然后從日志文件中按照緩沖區(qū)的大小向緩沖區(qū)里一次性填充多條數(shù)據(jù),然后再一條一條地從緩沖區(qū)中讀取數(shù)據(jù),同時對每一條數(shù)據(jù)進行解析,在讀取并解析了一次性填充的多條數(shù)據(jù)之后,再次進行填充和讀取操作,直到讀取并解析了所有數(shù)據(jù)為止,然后釋放緩沖區(qū)。具體地說,整個過程如圖7所示包含如下步驟。
步驟701,首先判斷是否已經(jīng)創(chuàng)建了預讀緩沖區(qū)。如果是,執(zhí)行步驟705,否則執(zhí)行步驟702。這里首先判斷是否創(chuàng)建了預讀緩沖區(qū)是為了系統(tǒng)的可靠性考慮的。
步驟702,在確認沒有創(chuàng)建預讀緩沖區(qū)的情況下,進一步判斷是否讀到了文件尾,也就是說,判斷這個日志文件是否是一個沒有任何數(shù)據(jù)內(nèi)容的空文件,如果讀到了文件尾,也就是說如果是一個空文件,結(jié)束本流程;否則執(zhí)行步驟703。
步驟703、704,創(chuàng)建一個空的預讀緩沖區(qū),并將用于表示數(shù)據(jù)位置的靜態(tài)讀指針指向空緩沖區(qū)尾部,然后執(zhí)行步驟707。
步驟705,判斷靜態(tài)讀指針是否指向緩沖區(qū)尾部。如果靜態(tài)讀指針指向緩沖區(qū)尾部,則表明該緩沖區(qū)為空,此時執(zhí)行填充數(shù)據(jù)的步驟,也就是步驟706、707和708。否則表明緩沖區(qū)內(nèi)有數(shù)據(jù),直接執(zhí)行讀取數(shù)據(jù)的步驟,也就是步驟709及其后續(xù)步驟。
步驟706,進一步判斷是否讀到了文件尾。同步驟702一樣,這一步驟也是為了判斷這個日志文件內(nèi)是否有數(shù)據(jù)記錄。如果是一個空文件,結(jié)束本流程;否則執(zhí)行步驟707。
步驟707、708,讀取與緩沖區(qū)大小相應的數(shù)據(jù),然后將靜態(tài)讀指針指向緩沖區(qū)頭部。這里的緩沖區(qū)大小相應的數(shù)據(jù)也就是一個緩沖區(qū)能容納的數(shù)據(jù),例如所建立的緩沖區(qū)能容納10條記錄,那么這里就一次性讀取10條日志數(shù)據(jù)記錄,然后將讀指針指向第一條記錄。
步驟709、710,讀取當前讀指針指向的記錄,然后按照前述解析方法對該記錄進行解析,并將解析后的結(jié)果保存在當前記錄日志緩沖區(qū)中。
步驟711,將讀指針指向下一個需要讀取的記錄。
步驟712,判斷當前的預讀緩沖區(qū)內(nèi)是否還有記錄。如果是,重新執(zhí)行步驟709;否則執(zhí)行步驟713。
步驟713,進一步判斷是否讀到文件尾部。如果讀到文件尾部,表明已經(jīng)讀取了所有數(shù)據(jù),則執(zhí)行釋放預讀緩沖區(qū)的步驟,也就是步驟714;否則表明日志文件內(nèi)還有數(shù)據(jù)未被讀取和解析,則再次執(zhí)行填充緩沖區(qū)的步驟,也就是步驟707和后續(xù)步驟,此時在步驟707中,新讀取的與緩沖區(qū)大小相應的數(shù)據(jù)直接替代原來緩沖區(qū)中的數(shù)據(jù)。
步驟714,釋放預讀緩沖區(qū)。至此本流程結(jié)束。
圖8是根據(jù)本發(fā)明的訪問有預讀緩存的日志記錄的方法示意圖。通過圖8可以對上述流程有一個更直觀的說明。如圖8所示,在創(chuàng)建了空緩沖區(qū)之后,通過N次調(diào)用next方法,從日志文件中一次性讀取N條數(shù)據(jù)記錄,然后通過一條一條記錄的讀取和解析,將這N條記錄的解析結(jié)果保存在當前日志記錄緩沖區(qū)中。然后,從第N+1次調(diào)用next方法開始循環(huán)上述步驟,直到讀取和解析了所有數(shù)據(jù)記錄為止。
經(jīng)過前述解析過程后,在步驟103中對統(tǒng)一格式的日志數(shù)據(jù)進行篩選,過濾對用戶來說沒有用處的日志信息,挑選出用戶關(guān)心的日志信息。這里的篩選操作是由日志篩選層來完成的。
前面已經(jīng)提到,在本發(fā)明的一個優(yōu)選實施例中,日志篩選層位于被管理主機,而日志表示層位于管理主機,日志篩選層和日志表示層之間通過TCP/IP等網(wǎng)絡通信協(xié)議進行通信。在這種情況下,本發(fā)明的篩選日志數(shù)據(jù)的處理包括如圖9所示的如下步驟。
步驟901,首先判斷管理主機上是否已經(jīng)定義檢索規(guī)則。如果還沒有定義檢索規(guī)則,則執(zhí)行步驟902,然后執(zhí)行步驟903,否則直接執(zhí)行步驟903。
這里的檢索規(guī)則總是與具體的日志文件相關(guān)的,每一種日志文件都有自己的一套預定義規(guī)則,這是因為對于不同的日志文件用戶所關(guān)心的信息是不一樣的。這里可以設置正向檢索規(guī)則和反向檢索規(guī)則。正向檢索規(guī)則就是將匹配該檢索規(guī)則的日志記錄放入結(jié)果緩沖區(qū)中,而反向檢索規(guī)則就是忽略匹配該檢索規(guī)則的日志記錄。換句話說,采用正向檢索規(guī)則就是從所有的日志記錄中查找符合要求的記錄,而采用反向檢索規(guī)則就是從所有的日志記錄中去除不滿足要求的記錄,從而剩下符合要求的記錄。至于具體采用哪種檢索規(guī)則是用戶基于檢索效率來考慮的,與本發(fā)明的發(fā)明目的并不太大關(guān)系,因此不再詳述。
檢索規(guī)則可以是目標規(guī)則、時間規(guī)則、級別規(guī)則或內(nèi)容字符串匹配規(guī)則,也就是分別根據(jù)前面經(jīng)過解析得到的日志記錄的日志目標、產(chǎn)生時間、日志級別和日志內(nèi)容來篩選日志記錄。當然,也可以綜合運用這些檢索規(guī)則來進行檢索。至于具體如何進行檢索是本領域技術(shù)人員的公知常識,這里不再贅述。
步驟902,如果沒有預先定義檢索規(guī)則,則臨時定義檢索規(guī)則,然后再管理主機上保存該檢索規(guī)則。
一般而言,檢索規(guī)則是相對固定的,因此不需要每次都去制定,在第一次制定了檢索規(guī)則后,可以將其保存在管理主機上,等到第二次執(zhí)行檢索日志記錄的處理時,就可以直接使用已經(jīng)保存的所有或部分檢索規(guī)則。
步驟903,管理主機將檢索規(guī)則下發(fā)到所有被管理主機。被管理主機保存接收自管理主機的檢索規(guī)則。
如果某個檢索規(guī)則可以重復使用,用戶可以在管理主機上將其保存為一個固定的預定義檢索規(guī)則,并為其分配一個唯一的標識性信息方便日后的引用。這樣在步驟903中,只需要向被管理主機下發(fā)該檢索規(guī)則的標識性信息即可,而不需要重新發(fā)送規(guī)則本身,因此提高了規(guī)則的下發(fā)效率。
日志管理命令及檢索規(guī)則可以從管理主機并發(fā)地下發(fā)給所有被管理主機,這樣可以使各個被管理主機并發(fā)地執(zhí)行日志管理,從而提高了管理的效率。
步驟904~906,被管理主機接收檢索命令,然后創(chuàng)建檢索結(jié)果緩沖區(qū),并創(chuàng)建日志數(shù)據(jù)源對象。
步驟907,順序讀取一條日志記錄。
步驟908,判斷讀取日志記錄是否成功。如果是,對讀取到的日志記錄在步驟909中進行檢索規(guī)則的匹配,然后在步驟910中判斷該日志記錄是否滿足檢索規(guī)則,這里以正向檢索規(guī)則為例,如果滿足,執(zhí)行步驟911,否則重新執(zhí)行步驟907。如果在步驟908中判斷出沒有成功讀取到日志記錄,則表明日志記錄已經(jīng)讀取完畢,執(zhí)行步驟912。
步驟911,將滿足正向檢索規(guī)則的日志記錄填充到緩沖區(qū)。然后重新執(zhí)行步驟907,也就是讀取下一條日志記錄。
步驟912~914,如果所有的日志記錄都已經(jīng)讀取并匹配完畢,釋放日志數(shù)據(jù)源對象,將匹配結(jié)果返回給管理主機,然后釋放檢索結(jié)果緩沖區(qū)。
在圖9所示的實施例中,在管理主機發(fā)送一個管理操作請求時,系統(tǒng)根據(jù)請求的文件名稱創(chuàng)建相應的日志數(shù)據(jù)源對象,在本次管理操作完成后,釋放該日志數(shù)據(jù)源對象。也就是說,這里的日志數(shù)據(jù)源對象采用的是臨時對象。當然可以理解,日志數(shù)據(jù)源對象可以采用持久化對象,也就是系統(tǒng)在啟動或接收到第一個操作請求時創(chuàng)建該對象,在完成該操作請求后并不立即釋放對象,而是等到系統(tǒng)停止時才釋放該對象。與持久化對象相比,本發(fā)明采用臨時對象更有利些,這是因為三個方面的原因。其一,從數(shù)據(jù)的訪問模式看,每一個日志管理操作都可以看成是一次對日志文件的完整遍歷,這是一種無狀態(tài)的操作,也就是下一次的管理操作和上一次的管理操作是無關(guān)的。其二,從訪問頻率來看,日志管理操作都是由用戶從界面觸發(fā)的,因此這種管理操作不會非常頻繁。其三,從一致性維護來看,如果使用持久化對象,就必須增加相應的邏輯來維護內(nèi)存對象與日志文件之間的一致性,而日志文件的內(nèi)容又是不斷變化的,因此勢必會極大地增加系統(tǒng)維護的工作量?;谏鲜鋈矫娴脑颍景l(fā)明優(yōu)選使用臨時對象方式來創(chuàng)建和釋放日志數(shù)據(jù)源對象。
在完成了上述步驟之后,在步驟104,將挑選出的日志信息顯示給用戶。這里的顯示方式對于本領域技術(shù)人員來說是公知常識,這里不再贅述。
通過上述過程,可以看出本發(fā)明通過采用不同的解析方法對不同格式的日志文件進行解析,形成統(tǒng)一的日志格式的日志數(shù)據(jù),然后對日志數(shù)據(jù)進行檢索規(guī)則的匹配,得到用戶所關(guān)心的信息,然后將其顯示給用戶。因此,本發(fā)明不但可以在同一個管理主機上對所有的日志文件進行統(tǒng)一的操作,大大提高了日志管理的方便性,同時,本發(fā)明通過統(tǒng)一日志格式,降低了管理操作的難度,提高了管理效率。
本發(fā)明可以應用于上述計算機機群管理系統(tǒng),也可以應用于單獨的計算機,通過本發(fā)明對該計算機上形成的不同格式的日志文件進行統(tǒng)一管理。因此可以理解,上述僅僅是本發(fā)明精神的展示,而不是限制。
權(quán)利要求
1.一種計算機日志的管理方法,至少包括如下步驟a.在計算機上保存所形成的計算機日志文件;b.將不同計算機日志文件所包含的不同格式的日志記錄解析成具有統(tǒng)一格式的日志記錄;c.對統(tǒng)一格式的日志記錄進行管理。
2.根據(jù)權(quán)利要求1所述的計算機日志的管理方法,其特征是,步驟c中的管理包括在計算機上顯示統(tǒng)一格式的日志記錄的步驟。
3.根據(jù)權(quán)利要求2所述的計算機日志的管理方法,其特征是,在顯示統(tǒng)一格式的日志記錄之前進一步包括篩選統(tǒng)一格式的日志記錄的步驟。
4.根據(jù)權(quán)利要求3所述的計算機日志的管理方法,其特征是,所述篩選步驟包括判斷是否已經(jīng)定義了檢索規(guī)則,如果是,執(zhí)行下一步;否則定義并保存檢索規(guī)則,然后執(zhí)行下一步;創(chuàng)建檢索結(jié)果緩沖區(qū),并創(chuàng)建包含統(tǒng)一格式的日志記錄的日志數(shù)據(jù)源對象;從日志數(shù)據(jù)源對象中順序讀取一條日志記錄,使用檢索規(guī)則匹配讀取的日志記錄,將匹配后得到的日志記錄填充到檢索結(jié)果緩沖區(qū),然后順序讀取下一條日志記錄;在匹配了所有日志記錄之后,釋放日志數(shù)據(jù)源對象,在計算機上顯示匹配后得到的日志記錄,釋放檢索結(jié)果緩沖區(qū)。
5.根據(jù)權(quán)利要求4所述的計算機日志的管理方法,其特征是,所述檢索規(guī)則是正向檢索規(guī)則,所述匹配后得到的日志記錄是滿足所述正向檢索規(guī)則的日志記錄;或者,所述檢索規(guī)則是反向檢索規(guī)則,所述匹配后得到的日志記錄是除了滿足反向檢索規(guī)則的日志記錄之外的所有日志記錄。
6.根據(jù)權(quán)利要求4所述的計算機日志的管理方法,其特征是,所述計算機日志管理方法應用于計算機機群,所述定義檢索規(guī)則的步驟在管理主機上進行,所述保存計算機日志文件、解析日志記錄、創(chuàng)建和釋放檢索結(jié)果緩沖區(qū)、創(chuàng)建和釋放日志數(shù)據(jù)源對象以及讀取并匹配日志記錄的步驟在被管理主機上進行,在管理主機定義了檢索規(guī)則之后本發(fā)明進一步包括將定義的檢索規(guī)則或用于標識檢索規(guī)則的標識信息下發(fā)給被管理主機的步驟,被管理主機在匹配了所有日志記錄之后進一步包括將匹配后得到的日志記錄發(fā)送給管理主機的步驟,所述顯示匹配后得到的日志記錄是在管理主機上進行的。
7.根據(jù)權(quán)利要求6所述的計算機日志的管理方法,其特征是,在管理主機保存了檢索規(guī)則之后進一步包括為所保存的檢索規(guī)則設置一個標識信息,并將所述檢索規(guī)則和對應的標識信息發(fā)送給被管理主機由被管理主機進行保存,所述將定義的檢索規(guī)則或用于標識檢索規(guī)則的標識信息下發(fā)給被管理主機是下發(fā)標識信息。
8.根據(jù)權(quán)利要求4至7中任意一項所述的計算機日志的管理方法,其特征是,在定義檢索規(guī)則的步驟中為不同種類的日志文件分別定義相應的檢索規(guī)則。
9.根據(jù)權(quán)利要求1所述的計算機日志的管理方法,其特征是,步驟b所述的解析步驟包括b1.為不同格式的日志記錄定義統(tǒng)一的日志格式;b2.建立用于保存解析后具有統(tǒng)一格式的日志記錄的當前日志記錄緩沖區(qū),并為每一種日志文件分別設置相應的解析方法;b3.打開日志文件,讀取日志文件中的日志記錄并使用步驟b2中的解析方法分別對每一條日志記錄解析成具有步驟b1所述的統(tǒng)一的日志格式的日志記錄;b4.將解析后具有統(tǒng)一格式的日志記錄保存在所述當前日志記錄緩沖區(qū)中。
10.根據(jù)權(quán)利要求9所述的計算機日志的管理方法,其特征是,步驟b3中讀取日志記錄是每次從保存在計算機磁盤上的日志文件中讀取一條日志記錄。
11.根據(jù)權(quán)利要求9所述的計算機日志的管理方法,其特征是,步驟b3中讀取日志記錄和解析過程包括如下步驟b31.創(chuàng)建一個空的預讀緩沖區(qū);b32.從保存在計算機磁盤上的日志文件中一次讀取和預讀緩沖區(qū)緩沖能力相應的大于等于1條的日志記錄并填充到預讀緩沖區(qū);b33.從預讀緩沖區(qū)中讀取一條日志記錄并進行解析,將解析后的結(jié)果保存到當前日志記錄緩沖區(qū)中,然后從預讀緩沖區(qū)中讀取下一條日志記錄;b34.在已經(jīng)讀取并解析了當前預讀緩沖區(qū)中的所有日志記錄之后,重復執(zhí)行步驟b32,并使用新讀取的日志記錄替代預讀緩沖區(qū)中原有的日志記錄,然后重復執(zhí)行步驟b33,直到已經(jīng)讀取并解析了該日志文件中的所有日志記錄;b35.釋放預讀緩沖區(qū)。
12.根據(jù)權(quán)利要求11所述的計算機日志的管理方法,其特征是,在步驟b31之前進一步包括判斷是否已經(jīng)創(chuàng)建一個空的預讀緩沖區(qū)的步驟,如果是,直接執(zhí)行步驟b32,否則順序執(zhí)行步驟b31和b32。
13.根據(jù)權(quán)利要求11所述的計算機日志的管理方法,其特征是,在步驟b32之前進一步包括判斷所述日志文件中是否包含日志記錄的步驟,如果是,執(zhí)行步驟b32,否則結(jié)束本流程。
14.根據(jù)權(quán)利要求9所述的計算機日志的管理方法,其特征是,在步驟b2中通過動態(tài)加載函數(shù)的形式設置解析方法。
15.根據(jù)權(quán)利要求9所述的計算機日志的管理方法,其特征是,步驟b1所述統(tǒng)一的日志格式包括用于標識日志文件的描述對象的日志目標、用于標識日志記錄生成時間的產(chǎn)生時間、用于標識日志記錄重要程度的日志級別、用于標識日志對象的詳細描述信息的日志內(nèi)容以及用于標識不屬于上述四項的其他內(nèi)容的其它信息。
16.根據(jù)權(quán)利要求15所述的計算機日志的管理方法,其特征是,所述日志目標的描述以及日志目標之間的相互關(guān)系在系統(tǒng)運行之前預先定義,并保存在一個單獨的配置文件中。
17.根據(jù)權(quán)利要求16所述的計算機日志的管理方法,其特征是,所述日志目標之間的相互關(guān)系通過可擴展的日志目標樹的形式定義。
18.根據(jù)權(quán)利要求15所述的計算機日志的管理方法,其特征是,所述日志級別通過表示日志記錄重要程度的非負整數(shù)和對該重要程度的文字表述組成的一個二元組來定義。
全文摘要
本發(fā)明公開了一種計算機日志的管理方法,至少包括如下步驟在計算機上保存所形成的計算機日志文件;將不同計算機日志文件所包含的不同格式的日志記錄解析成具有統(tǒng)一格式的日志記錄;然后對統(tǒng)一格式的日志記錄進行管理。其中可以進一步包括對具有統(tǒng)一格式的日志記錄進行篩選和顯示的步驟。本發(fā)明通過對日志文件所包含的具有不同格式的日志記錄采取不同的解析方法解析成具有統(tǒng)一格式的日志記錄,從而可以在一個管理主機上對所有被管理主機上的所有日志文件進行集中統(tǒng)一的管理。因此本發(fā)明極大地提高了日志管理的方便性,降低了管理操作的難度,并提高了管理效率。
文檔編號G06F11/14GK1670708SQ20041002942
公開日2005年9月21日 申請日期2004年3月17日 優(yōu)先權(quán)日2004年3月17日
發(fā)明者許正華, 黃平, 姜曉東 申請人:聯(lián)想(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
红桥区| 鹿泉市| 兴化市| 黔南| 西青区| 固镇县| 稷山县| 萨迦县| 邢台县| 迁安市| 龙江县| 依兰县| 东平县| 张掖市| 华阴市| 伊宁县| 惠来县| 河北区| 连云港市| 三门县| 奉新县| 靖安县| 双柏县| 江源县| 苍梧县| 社旗县| 大邑县| 安泽县| 嵩明县| 鸡泽县| 太康县| 南溪县| 内黄县| 滨海县| 天门市| 开化县| 岗巴县| 唐海县| 河间市| 肇州县| 平昌县|