專利名稱:一種linux下利用內(nèi)核模塊與應(yīng)用模塊結(jié)合完成軟件日志的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,具體地說(shuō)是一種Iinux下利用內(nèi)核模塊與應(yīng)用模塊結(jié)合完成軟件日志的方法。
背景技術(shù):
在一個(gè)完整的信息系統(tǒng)里面,日志統(tǒng)是一個(gè)非常重要的功能組成部分。它可以記錄下系統(tǒng)所產(chǎn)生的所有行為,并按照某種規(guī)范表達(dá)出來(lái)。我們可以使用日志統(tǒng)所記錄的信息為系統(tǒng)進(jìn)行排錯(cuò),優(yōu)化系統(tǒng)的性能,或者根據(jù)這些信息調(diào)整系統(tǒng)的行為。在安全領(lǐng)域,日志統(tǒng)的重要地位尤甚,可以說(shuō)是安全審計(jì)方面最主要的工具之一。在應(yīng)用軟件中日志統(tǒng)會(huì)記錄軟件具體的工作情況,當(dāng)軟件出現(xiàn)問(wèn)題了,查看日志是最主要的排除錯(cuò)誤,分析定位錯(cuò)誤的途徑。日志可以對(duì)軟件可以到到管理的作用,規(guī)范軟件應(yīng)用,這樣可以使軟件發(fā)揮最大的作用。機(jī)會(huì)所有的軟件中日志統(tǒng)是必不可少的,由此可見(jiàn)日志統(tǒng)的作用有多大。通常軟件的日志按照不同模塊的日志分開(kāi)的,日志一般輸出在不同的日志文件中,沒(méi)有做到統(tǒng)一的管理,查看或者應(yīng)用起來(lái)不太方便,需要到不同的日志文件中查找。此方法做到了不同模塊的日志可以輸出在統(tǒng)一日志文件中,這樣生成的日志就可以不受到不同模塊的限制了。并且日志信息的格式可以做到統(tǒng)一,這樣更便于統(tǒng)一的管理,查看起來(lái)也會(huì)更方便。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種Iinux下利用內(nèi)核模塊與應(yīng)用模塊結(jié)合完成軟件日志的方法。本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,利用內(nèi)核模塊與應(yīng)用模塊結(jié)合起來(lái)完成軟件的日志統(tǒng),軟件向內(nèi)核模塊寫(xiě)入日志信息,內(nèi)核模塊會(huì)把寫(xiě)入的日志信息已鏈表的形式組成起來(lái)存放,應(yīng)用模塊從內(nèi)核層取出日志信息,并對(duì)信息按照需要的顯示格式處理,最終向要保存的日志文件中輸出,其中:
(O內(nèi)核模塊的驅(qū)動(dòng)程序編寫(xiě)以及日志信息的存儲(chǔ)格式的定義:內(nèi)核模塊是一種Iinux下字符驅(qū)動(dòng)模塊,字符驅(qū)動(dòng)模塊是當(dāng)有日志信息寫(xiě)入時(shí),把日志信息增加到模塊內(nèi)的日志信息鏈表中,寫(xiě)入日志信息保存在內(nèi)核模塊內(nèi)的日志信息鏈表中,當(dāng)日志信息取出后,保存在日志信息鏈表中的日志信息就被清除;日志信息的存儲(chǔ)格式就是日志信息鏈表的節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu),用戶根據(jù)自己需求自己定義;
(2)應(yīng)用模塊中的應(yīng)用層日志處理就是當(dāng)有日志信息寫(xiě)入時(shí),先要把內(nèi)核模塊中已有的日志信息,按照自己需要顯示的規(guī)則輸出到指定的日志文件中;
具體步驟如下:
內(nèi)核模塊寫(xiě)一個(gè)Iinux的字符驅(qū)動(dòng)程序,然后用insmod載入模塊,字符驅(qū)動(dòng)中,做的工作就是在write函數(shù)里面,把寫(xiě)入的信息加入日志信息的鏈表中,在read函數(shù)中從鏈表中取出日志信息,并清除鏈表中取出的日志信息; 應(yīng)用模塊日志處理:
1)應(yīng)用層從內(nèi)核層取出日志信息,按照要顯示的格式組織每一條日志信息,格式:時(shí)間+進(jìn)程ID+日志來(lái)源+描述信息,把組織好的日志信息向指定的日志文件中輸入;
2)在服務(wù)程序中,應(yīng)該用一個(gè)單獨(dú)的進(jìn)程來(lái)進(jìn)行應(yīng)用層的日志組織格式與日志文件的輸入,這樣既不會(huì)影響業(yè)務(wù)邏輯,也能達(dá)到保存日志文件的作用;
3)在多模塊的軟件中,不同的模塊調(diào)用接口向加載的模塊中寫(xiě)入日志信息,然后用一個(gè)公共的程序來(lái)組織日志格式與日志文件的輸入工作,這樣的一個(gè)日志統(tǒng)就搭建成功了。本發(fā)明的有益效果是:利用內(nèi)核模塊與應(yīng)用模塊結(jié)合起來(lái)完成軟件的日志統(tǒng),軟件向內(nèi)核模塊寫(xiě)入日志信息,內(nèi)核模塊會(huì)把寫(xiě)入的日志信息已鏈表的形式組成起來(lái)存放,應(yīng)用模塊從內(nèi)核層取出日志信息,并對(duì)信息按照需要的顯示格式處理,最終向要保存的日志文件中輸出此方法的應(yīng)用可以完成Iinux下軟件寫(xiě)日志的功能,可以是多模塊的軟件,也可以是單模塊的軟件,思路清晰易懂,可以按照不同的格式來(lái)輸出日志文件。
圖1是軟件日志處理流程圖。
具體實(shí)施例方式參照說(shuō)明書(shū)附圖對(duì)本發(fā)明的方法作以下詳細(xì)地說(shuō)明。利用內(nèi)核層與應(yīng)用層模塊結(jié)合起來(lái)完成軟件的日志統(tǒng),軟件可以向內(nèi)核模塊寫(xiě)入日志信息,內(nèi)核模塊會(huì)把寫(xiě)入的日志信息已鏈表的形式組成起來(lái)存放。應(yīng)用層模塊是從內(nèi)核層取出日志信息,并對(duì)信息按照需要的顯示格式處理,最終向要保存的日志文件中輸出。本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的,本發(fā)明包括:內(nèi)核模塊代碼的設(shè)計(jì)編寫(xiě),以應(yīng)用層的取出日志信息,并對(duì)日志信息進(jìn)行處理輸出到保存的日志文件。所述內(nèi)核模塊代碼的設(shè)計(jì)編寫(xiě),具體為:
內(nèi)核層就是寫(xiě)一個(gè)Iinux的字符驅(qū)動(dòng)程序。然后用insmod載入模塊。字符驅(qū)動(dòng)中,做的工作就是在write函數(shù)里面,把寫(xiě)入的信息加入日志信息的鏈表中。在read函數(shù)中從鏈表中取出日志信息,并清除鏈表中取出的日志信息。所述的應(yīng)用層模塊設(shè)計(jì),具體為:
(1)應(yīng)用層就是從內(nèi)核層取出日志信息。按照要顯示的格式組織每一條日志信息(例如格式:時(shí)間+進(jìn)程ID+日志來(lái)源+描述信息)。把組織好的日志信息向指定的日志文件中輸A ;
(2)—般在服務(wù)程序中,應(yīng)該用一個(gè)單獨(dú)的進(jìn)程來(lái)進(jìn)行應(yīng)用層的日志組織格式與日志文件的輸入。這樣既不會(huì)影響業(yè)務(wù)邏輯,也能達(dá)到保存日志文件的作用;
(3)在多模塊的軟件中,不同的模塊可以調(diào)用接口向加載的模塊中寫(xiě)入日志信息。然后用一個(gè)公共的程序來(lái)組織日志格式與日志文件的輸入工作。這樣的一個(gè)日志統(tǒng)就可以搭建成功了。
實(shí)施例1、加載內(nèi)核模塊。內(nèi)核層就是寫(xiě)一個(gè)Iinux的字符驅(qū)動(dòng)程序。把寫(xiě)入的日志信息已鏈表的形式組成起來(lái)存放。如圖1所不,鏈表就代表內(nèi)核層的保存日志信息的鏈表; 2、各個(gè)模塊日志寫(xiě)入日志信息。(圖1顯示了三個(gè)模塊分別向內(nèi)核層寫(xiě)入日志信息,多少個(gè)模塊是由軟件決定的沒(méi)有最大限制的,一般都是夠用的。);
3、取出日志信息。把取出來(lái)的日志信息組織成一定的格式(例如格式:時(shí)間+進(jìn)程ID+日志來(lái)源+描述信息)。這里的格式是用戶按照自己的需要定制的統(tǒng)一輸出格式;
4、把組織好的日志向指定的日志文件輸入(日志文件是用戶自己定義的輸出文件,例如:/syslog.log)。除說(shuō)明書(shū)所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1.一種Iinux下利用內(nèi)核模塊與應(yīng)用模塊結(jié)合完成軟件日志的方法,其特征在于利用內(nèi)核模塊與應(yīng)用模塊結(jié)合起來(lái)完成軟件的日志統(tǒng),軟件向內(nèi)核模塊寫(xiě)入日志信息,內(nèi)核模塊會(huì)把寫(xiě)入的日志信息已鏈表的形式組成起來(lái)存放,應(yīng)用模塊從內(nèi)核層取出日志信息,并對(duì)信息按照需要的顯示格式處理,最終向要保存的日志文件中輸出,其中: (O內(nèi)核模塊的驅(qū)動(dòng)程序編寫(xiě)以及日志信息的存儲(chǔ)格式的定義:內(nèi)核模塊是一種Iinux下字符驅(qū)動(dòng)模塊,字符驅(qū)動(dòng)模塊是當(dāng)有日志信息寫(xiě)入時(shí),把日志信息增加到模塊內(nèi)的日志信息鏈表中,寫(xiě)入日志信息保存在內(nèi)核模塊內(nèi)的日志信息鏈表中,當(dāng)日志信息取出后,保存在日志信息鏈表中的日志信息就被清除;日志信息的存儲(chǔ)格式就是日志信息鏈表的節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu),用戶根據(jù)自己需求自己定義; (2)應(yīng)用模塊中的應(yīng)用層日志處理就是當(dāng)有日志信息寫(xiě)入時(shí),先要把內(nèi)核模塊中已有的日志信息,按照自己需要顯示的規(guī)則輸出到指定的日志文件中; 具體步驟如下: 內(nèi)核模塊寫(xiě)一個(gè)Iinux的字符驅(qū)動(dòng)程序,然后用insmod載入模塊,字符驅(qū)動(dòng)中,做的工作就是在write函數(shù)里面,把寫(xiě)入的信息加入日志信息的鏈表中,在read函數(shù)中從鏈表中取出日志信息,并清除鏈表中取出的日志信息; 應(yīng)用模塊日志處理: 1)應(yīng)用層從內(nèi)核層取出日志信息,按照要顯示的格式組織每一條日志信息,格式:時(shí)間+進(jìn)程ID+日志來(lái)源+描述信息,把組織好的日志信息向指定的日志文件中輸入; 2)在服務(wù)程序中,應(yīng)該用一個(gè)單獨(dú)的進(jìn)程來(lái)進(jìn)行應(yīng)用層的日志組織格式與日志文件的輸入,這樣既不會(huì)影響業(yè)務(wù)邏輯,也能達(dá)到保存日志文件的作用; 3)在多模塊的軟件中,不同的模塊調(diào)用接口向加載的模塊中寫(xiě)入日志信息,然后用一個(gè)公共的程序來(lái)組織日志格式與日志文件的輸入工作,這樣的一個(gè)日志統(tǒng)就搭建成功了。
全文摘要
本發(fā)明提供一種linux下利用內(nèi)核模塊與應(yīng)用模塊結(jié)合完成軟件日志的方法,利用內(nèi)核模塊與應(yīng)用模塊結(jié)合起來(lái)完成軟件的日志統(tǒng),軟件向內(nèi)核模塊寫(xiě)入日志信息,內(nèi)核模塊會(huì)把寫(xiě)入的日志信息已鏈表的形式組成起來(lái)存放,應(yīng)用模塊從內(nèi)核層取出日志信息,并對(duì)信息按照需要的顯示格式處理,最終向要保存的日志文件中輸出此方法的應(yīng)用可以完成linux下軟件寫(xiě)日志的功能,可以是多模塊的軟件,也可以是單模塊的軟件,思路清晰易懂,可以按照不同的格式來(lái)輸出日志文件。
文檔編號(hào)G06F11/34GK103176891SQ20131011214
公開(kāi)日2013年6月26日 申請(qǐng)日期2013年4月2日 優(yōu)先權(quán)日2013年4月2日
發(fā)明者呂萬(wàn)波, 張道偉, 王旭 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司