一種在系統(tǒng)中異步記錄日志的方法和裝置制造方法
【專利摘要】本發(fā)明公開一種在系統(tǒng)中異步記錄日志的方法和裝置,該方法包括以下步驟:a.初始化步驟,在該步驟中,對系統(tǒng)中的記錄日志的應(yīng)用程序進(jìn)行初始化配置,創(chuàng)建通訊管道,用于接收來自所述應(yīng)用程序的日志數(shù)據(jù),創(chuàng)建異步寫線程;b.寫步驟,在該步驟中,利用異步寫線程從所述通訊管道讀取日志數(shù)據(jù),以及將讀取的日志數(shù)據(jù)寫入日志文件。
【專利說明】一種在系統(tǒng)中異步記錄日志的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)系統(tǒng)的日志生成,并且尤其涉及在系統(tǒng)中異步記錄日志的方法和裝置。
【背景技術(shù)】
[0002]目前基本上所有的系統(tǒng)都需要在運(yùn)行時由系統(tǒng)中的應(yīng)用程序記錄日志。通過日志監(jiān)控,運(yùn)維人員可以在第一時間內(nèi)獲取系統(tǒng)的各種應(yīng)用程序的報錯信息。如果記錄日志的操作不采用任何保護(hù)措施,例如,當(dāng)日志所在的文件系統(tǒng)或者磁盤損壞或發(fā)送異常時,記錄日志的應(yīng)用程序會出現(xiàn)掛死等情況,這會影響整個系統(tǒng)的正常運(yùn)行。
[0003]目前針對日志記錄主要有兩種保護(hù)方式。一種是硬件方式,包括采用冗余磁盤陣列等;另外一種是軟件方式,包括采用LINUX平臺上的a1等。對于硬件保護(hù)方式,當(dāng)磁盤系統(tǒng)發(fā)生異常的時候,冗余磁盤陣列無法做到無縫切換,此外該方式也無法應(yīng)對文件系統(tǒng)異常的情況。對于軟件保護(hù)方式,雖然可以同時應(yīng)對磁盤異常和文件系統(tǒng)異常,但是這種方式只適用于特定的平臺。而且在使用例如a1的時候,還需要在主機(jī)系統(tǒng)上啟動大量的a1管理進(jìn)程,這對于日志記錄量很小的情況,將造成對主機(jī)資源的浪費(fèi)。
【發(fā)明內(nèi)容】
[0004]根據(jù)本發(fā)明的一個目的,公開一種在系統(tǒng)中異步記錄日志的方法,包括以下步驟:
a.初始化步驟,在該步驟中,
對系統(tǒng)中的記錄日志的應(yīng)用程序進(jìn)行初始化配置,
創(chuàng)建通訊管道,用于接收來自所述應(yīng)用程序的日志數(shù)據(jù),
創(chuàng)建異步寫線程;
b.寫步驟,在該步驟中,
利用異步寫線程從所述通訊管道讀取日志數(shù)據(jù),以及將讀取的日志數(shù)據(jù)寫入日志文件。
[0005]優(yōu)選地,所述通訊管道還用于向所述應(yīng)用程序發(fā)送通訊管道狀態(tài)。
[0006]優(yōu)選地,在初始化步驟中配置異步寫線程的數(shù)量,使其適于處理通訊管道中的日志數(shù)據(jù)。
[0007]優(yōu)選地,所述方法還包括管理步驟,在該步驟中,監(jiān)控異步寫線程的工作狀態(tài),以便當(dāng)發(fā)現(xiàn)異步寫線程掛死時重啟對應(yīng)的線程。
[0008]根據(jù)本發(fā)明的另一個目的,公開一種在系統(tǒng)中異步記錄日志的裝置,包括以下模塊:
a.初始化模塊,該模塊被配置成,
對系統(tǒng)中的記錄日志的應(yīng)用程序進(jìn)行初始化配置,
創(chuàng)建通訊管道,用于接收來自所述應(yīng)用程序的日志數(shù)據(jù), 創(chuàng)建異步寫線程;
b.寫模塊,該模塊被配置成,
利用異步寫線程從所述通訊管道讀取日志數(shù)據(jù),以及將讀取的日志數(shù)據(jù)寫入日志文件。
[0009]優(yōu)選地,所述通訊管道被配置成向所述應(yīng)用程序發(fā)送通訊管道狀態(tài)。
[0010]優(yōu)選地,初始化模塊用于配置異步寫線程的數(shù)量,使其適于處理通訊管道中的日志數(shù)據(jù)。
[0011]優(yōu)選地,所述裝置還包括管理模塊,該模塊被配置成,監(jiān)控異步寫線程的工作狀態(tài),以便當(dāng)發(fā)現(xiàn)異步寫線程掛死時重啟對應(yīng)的線程。
[0012]本發(fā)明的一個優(yōu)勢在于,本發(fā)明的異步記錄日志的方法和裝置能夠應(yīng)對包括文件系統(tǒng)異常和磁盤異常等的各種情景,系統(tǒng)資源占有率相比于a1等方式大幅降低。本發(fā)明具有很強(qiáng)的適用性,可以用于UNIX、LINUX、WINDOWS等各個平臺。
【專利附圖】
【附圖說明】
[0013]在參照附圖閱讀了本發(fā)明的【具體實施方式】以后,本領(lǐng)域技術(shù)人員將會更清楚地了解本發(fā)明的各個方面。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,這些附圖僅僅用于配合【具體實施方式】說明本發(fā)明的技術(shù)方案,而并非意在對本發(fā)明的保護(hù)范圍構(gòu)成限制。其中,
圖1是根據(jù)本發(fā)明實施例的在系統(tǒng)中異步記錄日志的方法的步驟示意圖。
[0014]圖2是根據(jù)本發(fā)明實施例的在系統(tǒng)中異步記錄日志的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0015]下面參照附圖,對本發(fā)明的【具體實施方式】作進(jìn)一步的詳細(xì)描述。在下面的描述中,為了解釋的目的,陳述許多具體細(xì)節(jié)以便提供對實施例的一個或多個方面的透徹理解。
[0016]圖1是根據(jù)本發(fā)明實施例的在系統(tǒng)中異步記錄日志的方法的步驟示意圖。如圖1所示,在系統(tǒng)中異步記錄日志的方法可以包括初始化步驟、寫步驟和可選的管理步驟。
[0017]在初始化步驟中,對系統(tǒng)中的記錄日志的應(yīng)用程序進(jìn)行初始化配置,創(chuàng)建通訊管道,用于接收來自所述應(yīng)用程序的日志數(shù)據(jù),以及創(chuàng)建異步寫線程。
[0018]在寫步驟中,利用異步寫線程從所述通訊管道讀取日志數(shù)據(jù),以及將讀取的日志數(shù)據(jù)寫入日志文件。例如,當(dāng)某一個異步寫線程接收到通訊管道中的日志數(shù)據(jù)時,立即將其寫入到日志文件中,即使此時文件系統(tǒng)或者磁盤異常,也只是異步寫線程掛死,不會影響記錄日志的應(yīng)用程序。
[0019]在管理步驟中,監(jiān)控異步寫線程的工作狀態(tài),以便當(dāng)發(fā)現(xiàn)異步寫線程掛死時重啟對應(yīng)的線程。
[0020]優(yōu)選地,通訊管道還用于向應(yīng)用程序發(fā)送通訊管道狀態(tài)。從而當(dāng)所述通訊管道不能處理來自所述應(yīng)用程序的日志數(shù)據(jù)時,所述應(yīng)用程序不會出現(xiàn)掛死等情況。應(yīng)用程序能夠?qū)⑷罩緮?shù)據(jù)“非阻塞”寫入通訊管道。
[0021]在另一個實施例中,在初始化步驟中配置異步寫線程的數(shù)量,使其適于處理通訊管道中的日志數(shù)據(jù)?;蛘?,在寫步驟中根據(jù)日志數(shù)據(jù)的量來調(diào)整異步寫線程的數(shù)量。
[0022]圖2是根據(jù)本發(fā)明實施例的在系統(tǒng)中異步記錄日志的裝置的結(jié)構(gòu)示意圖。如圖所示,在系統(tǒng)中異步記錄日志的裝置包括初始化模塊、寫模塊和可選的管理模塊。其中,初始化模塊被配置成對系統(tǒng)中的記錄日志的應(yīng)用程序進(jìn)行初始化配置,創(chuàng)建通訊管道,用于接收來自所述應(yīng)用程序的日志數(shù)據(jù),創(chuàng)建異步寫線程。寫模塊被配置成利用異步寫線程從所述通訊管道讀取日志數(shù)據(jù),以及將讀取的日志數(shù)據(jù)寫入日志文件。管理模塊可以被配置成,監(jiān)控異步寫線程的工作狀態(tài),以便當(dāng)發(fā)現(xiàn)異步寫線程掛死時重啟對應(yīng)的線程。
[0023]在一個實施例中,所述通訊管道被配置成向所述應(yīng)用程序發(fā)送通訊管道狀態(tài)。
[0024]在一個實施例中,初始化模塊用于配置異步寫線程的數(shù)量,使其適于處理通訊管道中的日志數(shù)據(jù)。
[0025]本發(fā)明通過通訊管道和異步寫線程與日志文件進(jìn)行通訊。當(dāng)記錄日志的應(yīng)用程序需要記錄日志的時候,會通過通訊管道將日志數(shù)據(jù)發(fā)送給寫模塊,由于應(yīng)用程序(報錯應(yīng)用)和管道之間采用非阻塞的方式進(jìn)行交互并且應(yīng)用程序也不會調(diào)用任何寫日志的操作,因此磁盤或者文件系統(tǒng)異常不會影響到報錯應(yīng)用的正常運(yùn)行。
[0026]盡管可以僅關(guān)于若干實施方式中的一個公開了實施例的特定特征或方面,但可針對任何給定的或特定的應(yīng)用所期望和有利的那樣,這種特征或方面可與其他實施方式的一種或多個其他特征或方面相組合。通過以上實施方式的描述,本領(lǐng)域中的普通技術(shù)人員能夠理解,在不偏離本發(fā)明的精神和范圍的情況下,還可以對本發(fā)明的【具體實施方式】作各種變更和替換。這些變更和替換都落在本發(fā)明權(quán)利要求書所限定的范圍內(nèi)。
【權(quán)利要求】
1.一種在系統(tǒng)中異步記錄日志的方法,其特征在于,包括以下步驟: a.初始化步驟,在該步驟中, 對系統(tǒng)中的記錄日志的應(yīng)用程序進(jìn)行初始化配置, 創(chuàng)建通訊管道,用于接收來自所述應(yīng)用程序的日志數(shù)據(jù), 創(chuàng)建異步寫線程; b.寫步驟,在該步驟中, 利用異步寫線程從所述通訊管道讀取日志數(shù)據(jù),以及將讀取的日志數(shù)據(jù)寫入日志文件。
2.如權(quán)利要求1所述的方法,其特征在于, 所述通訊管道還用于向所述應(yīng)用程序發(fā)送通訊管道狀態(tài)。
3.如權(quán)利要求1所述的方法,其特征在于, 在初始化步驟中配置異步寫線程的數(shù)量,使其適于處理通訊管道中的日志數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其特征在于, 所述方法還包括管理步驟,在該步驟中,監(jiān)控異步寫線程的工作狀態(tài),以便當(dāng)發(fā)現(xiàn)異步寫線程掛死時重啟對應(yīng)的線程。
5.一種在系統(tǒng)中異步記錄日志的裝置,其特征在于,包括以下模塊: a.初始化模塊,該模塊被配置成, 對系統(tǒng)中的記錄日志的應(yīng)用程序進(jìn)行初始化配置, 創(chuàng)建通訊管道,用于接收來自所述應(yīng)用程序的日志數(shù)據(jù), 創(chuàng)建異步寫線程; b.寫模塊,該模塊被配置成, 利用異步寫線程從所述通訊管道讀取日志數(shù)據(jù),以及將讀取的日志數(shù)據(jù)寫入日志文件。
6.如權(quán)利要求5所述的裝置,其特征在于, 所述通訊管道被配置成向所述應(yīng)用程序發(fā)送通訊管道狀態(tài)。
7.如權(quán)利要求5所述的裝置,其特征在于, 初始化模塊用于配置異步寫線程的數(shù)量,使其適于處理通訊管道中的日志數(shù)據(jù)。
8.如權(quán)利要求5所述的裝置,其特征在于, 所述裝置還包括管理模塊,該模塊被配置成,監(jiān)控異步寫線程的工作狀態(tài),以便當(dāng)發(fā)現(xiàn)異步寫線程掛死時重啟對應(yīng)的線程。
【文檔編號】G06F11/34GK104050074SQ201310077706
【公開日】2014年9月17日 申請日期:2013年3月12日 優(yōu)先權(quán)日:2013年3月12日
【發(fā)明者】邱鵬, 楊燕明 申請人:中國銀聯(lián)股份有限公司