欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種LFS系統(tǒng)中的日志處理方法及裝置與流程

文檔序號(hào):12597902閱讀:527來(lái)源:國(guó)知局
一種LFS系統(tǒng)中的日志處理方法及裝置與流程

本發(fā)明涉及金融技術(shù)領(lǐng)域,特別涉及一種LFS系統(tǒng)中的日志處理方法及裝置。



背景技術(shù):

目前,絕大部分金融終端設(shè)備,如ATM機(jī)等,均遵循基于Windows操作系統(tǒng)的CEN/XFS(ComitéEuropéen de Normalisation/eXtensions for Financial Services)規(guī)范,CEN/XFS規(guī)范為歐洲標(biāo)準(zhǔn)化委員會(huì)制定的金融服務(wù)擴(kuò)展規(guī)范。而隨著Linux系統(tǒng)逐漸應(yīng)用于越來(lái)越多的領(lǐng)域,現(xiàn)已出現(xiàn)了以Linux系統(tǒng)為基礎(chǔ)的XFS實(shí)現(xiàn)系統(tǒng),簡(jiǎn)稱為L(zhǎng)FS(Linux Financial Services)系統(tǒng)。

現(xiàn)有的LFS系統(tǒng)中日志處理的方法,一般是在調(diào)用正常功能之前先調(diào)用日志寫入接口,直接將日志信息寫入日志文件,如果寫日志尚未結(jié)束,下面的正常功能就無(wú)法開(kāi)始執(zhí)行。而寫文件的操作一般都較慢,可能會(huì)導(dǎo)致系統(tǒng)正常功能的性能下降,而且一旦寫日志發(fā)生錯(cuò)誤,正常功能會(huì)無(wú)法得到執(zhí)行。同時(shí),由于沒(méi)有實(shí)行進(jìn)程隔離操作,降低了系統(tǒng)的穩(wěn)定性和可擴(kuò)展性,而且大量的日志信息混雜在一起,難以進(jìn)行后期的數(shù)據(jù)分析。



技術(shù)實(shí)現(xiàn)要素:

為此,本發(fā)明提供一種LFS系統(tǒng)中的日志處理方案,以力圖解決或者至少緩解上面存在的問(wèn)題。

根據(jù)本發(fā)明的一個(gè)方面,提供一種LFS系統(tǒng)中的日志處理方法,適于在金融終端設(shè)備中執(zhí)行,該金融終端設(shè)備中駐留有LFS系統(tǒng),并與日志服務(wù)器遠(yuǎn)程通信連接,LFS系統(tǒng)包括AP層、LFS管理器、SP層和設(shè)備驅(qū)動(dòng)層,該方法包括如下步驟:首先,獲取當(dāng)前進(jìn)程調(diào)用LFS管理器提供的日志寫入接口所傳入的當(dāng)前日志文本,當(dāng)前進(jìn)程為AP進(jìn)程和SP進(jìn)程中的任一種;對(duì)當(dāng)前日志文本進(jìn)行日志級(jí)別設(shè)置,日志級(jí)別包括調(diào)試、信息、警告、錯(cuò)誤、致命錯(cuò)誤中任一種;通過(guò)復(fù)制當(dāng)前日志文本和對(duì)應(yīng)的日志級(jí)別,與當(dāng)前進(jìn)程的進(jìn)程號(hào)組合生成當(dāng)前日志信息;獲取內(nèi)存中日志信息列表的線程鎖,通過(guò)線程鎖將當(dāng)前日志信息寫入到日志信息列表中,并釋放線程鎖;通過(guò)日志線程訪問(wèn)日志信息列表,將其中所有日志信息通過(guò)異步dbus消息發(fā)送至日志服務(wù)器,指示日志服務(wù)器將日志信息列表中所有日志信息寫入當(dāng)前日志文件中。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理方法中,還包括:通過(guò)當(dāng)前進(jìn)程創(chuàng)建向當(dāng)前日志信息列表寫入當(dāng)前日志信息的寫入線程。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理方法中,還包括:通過(guò)當(dāng)前進(jìn)程將日志信息列表的線程鎖授予寫入線程。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理方法中,通過(guò)線程鎖將當(dāng)前日志信息寫入日志信息列表中進(jìn)行存儲(chǔ)包括:寫入線程通過(guò)線程鎖訪問(wèn)日志信息列表;將當(dāng)前日志信息寫入到日志信息列表中,日志信息列表以循環(huán)隊(duì)列的方式存儲(chǔ)日志信息。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理方法中,還包括:若當(dāng)前日志信息中的日志級(jí)別為錯(cuò)誤和致命錯(cuò)誤中任一種,則將當(dāng)前日志信息打印到當(dāng)前進(jìn)程的控制臺(tái)上。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理方法中,通過(guò)日志線程訪問(wèn)日志信息列表,將其中所有的日志信息通過(guò)異步dbus消息發(fā)送至日志服務(wù)器包括:向日志線程發(fā)出日志信息列表中存儲(chǔ)了當(dāng)前日志信息的通知;日志線程收到通知后,獲取日志信息列表的線程鎖;通過(guò)線程鎖訪問(wèn)日志信息列表,并通過(guò)異步dbus消息將所有日志信息發(fā)送至日志服務(wù)器。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理方法中,還包括:若日志線程已將日志信息列表中所有日志信息發(fā)送至日志服務(wù)器,則清空日志信息列表,釋放日志信息列表的線程鎖。

根據(jù)本發(fā)明的又一個(gè)方面,提供一種LFS系統(tǒng)中的日志處理裝置,適于駐留在金融終端設(shè)備中,該金融終端設(shè)備中駐留有LFS系統(tǒng),并與日志服務(wù)器遠(yuǎn)程通信連接,LFS系統(tǒng)包括AP層、LFS管理器、SP層和設(shè)備驅(qū)動(dòng)層,該裝置包括獲取模塊、設(shè)置模塊、生成模塊、第一寫入模塊和發(fā)送模塊。其中,獲取模塊適于獲取當(dāng)前進(jìn)程調(diào)用LFS管理器提供的日志寫入接口所傳入的當(dāng)前日志文本,當(dāng)前進(jìn)程為AP進(jìn)程和SP進(jìn)程中的任一種;設(shè)置模塊適于對(duì)當(dāng)前日志文本進(jìn)行日志級(jí)別設(shè)置,日志級(jí)別包括調(diào)試、信息、警告、錯(cuò)誤、致命錯(cuò)誤中任一種;生成模塊適于通過(guò)復(fù)制當(dāng)前日志文本和對(duì)應(yīng)的日志級(jí)別,與當(dāng)前進(jìn)程的進(jìn)程號(hào)組合生成當(dāng)前日志信息;第一寫入模塊適于獲取內(nèi)存中日志信息列表的線程鎖,通過(guò)線程鎖將當(dāng)前日志信息寫入到日志信息列表中,并釋放線程鎖;發(fā)送模塊適于通過(guò)日志線程訪問(wèn)日志信息列表,將其中所有日志信息通過(guò)異步dbus消息發(fā)送至日志服務(wù)器,指示日志服務(wù)器將日志信息列表中所有日志信息寫入當(dāng)前日志文件中。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理裝置中,還包括創(chuàng)建模塊,適于通過(guò)當(dāng)前進(jìn)程創(chuàng)建向當(dāng)前日志信息列表寫入當(dāng)前日志信息的寫入線程。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理裝置中,還包括授予模塊,適于通過(guò)當(dāng)前進(jìn)程將日志信息列表的線程鎖授予寫入線程。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理裝置中,第一寫入模塊進(jìn)一步適于:寫入線程通過(guò)線程鎖訪問(wèn)日志信息列表;將當(dāng)前日志信息寫入日志信息列表中進(jìn)行存儲(chǔ),日志信息列表以循環(huán)隊(duì)列的方式存儲(chǔ)日志信息。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理裝置中,還包括打印模塊,適于當(dāng)當(dāng)前日志信息中的日志級(jí)別為錯(cuò)誤和致命錯(cuò)誤中任一種時(shí),將當(dāng)前日志信息打印到當(dāng)前進(jìn)程的控制臺(tái)上。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理裝置中,發(fā)送模塊進(jìn)一步適于:向日志線程發(fā)出日志信息列表中存儲(chǔ)了當(dāng)前日志信息的通知;日志線程收到通知后,獲取日志信息列表的線程鎖;通過(guò)線程鎖訪問(wèn)日志信息列表,并通過(guò)異步dbus消息將所有日志信息發(fā)送至日志服務(wù)器。

可選地,在根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理裝置中,還包括清空模塊,適于當(dāng)日志線程已將日志信息列表中所有日志信息發(fā)送至日志服務(wù)器時(shí),清空日志信息列表,釋放日志信息列表的線程鎖。

根據(jù)本發(fā)明的又一個(gè)方面,提供一種日志服務(wù)器,與多個(gè)金融終端設(shè)備遠(yuǎn)程通信連接,該日志服務(wù)器包括接收模塊、判斷模塊、第二寫入模塊、歸檔模塊和第三寫入模塊。其中,接收模塊適于接收金融終端設(shè)備發(fā)送的日志信息列表中的所有日志信息;判斷模塊適于判斷當(dāng)前日志文件的大小是否超過(guò)系統(tǒng)預(yù)設(shè)值;第二寫入模塊適于當(dāng)當(dāng)前日志文件的大小未超過(guò)系統(tǒng)預(yù)設(shè)值時(shí),將當(dāng)前日志信息寫入當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳;歸檔模塊適于當(dāng)當(dāng)前日志文件的大小已超過(guò)系統(tǒng)預(yù)設(shè)值時(shí),將當(dāng)前日志文件進(jìn)行歸檔處理;第三寫入模塊適于當(dāng)當(dāng)前日志文件的大小已超過(guò)系統(tǒng)預(yù)設(shè)值時(shí),重新生成日志文件作為新的當(dāng)前日志文件,將當(dāng)前日志信息寫入新的當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳。

根據(jù)本發(fā)明的LFS系統(tǒng)中的日志處理的技術(shù)方案,對(duì)獲取到的當(dāng)前日志文本進(jìn)行日志級(jí)別設(shè)置,并復(fù)制當(dāng)前日志文本和對(duì)應(yīng)的日志級(jí)別,與當(dāng)前進(jìn)程的進(jìn)程號(hào)組合生成當(dāng)前日志信息,通過(guò)日志信息列表的線程鎖將當(dāng)前日志信息寫入到日志信息列表中,再通過(guò)日志線程訪問(wèn)日志信息列表,將其中所有日志信息利用異步dbus消息發(fā)送至日志服務(wù)器,指示日志服務(wù)器將所有日志信息寫入當(dāng)前日志文件中。上述技術(shù)方案中,將當(dāng)前日志信息寫入內(nèi)存中的日志信息列表采用了異步處理方式,同時(shí)還利用異步dbus消息將日志信息列表中的所有日志信息發(fā)送至遠(yuǎn)程的日志服務(wù)器,進(jìn)一步保證了日志處理的異步性,提升了整個(gè)系統(tǒng)的性能、穩(wěn)定性與可擴(kuò)展性。而且,當(dāng)前日志信息中包含有對(duì)應(yīng)的日志級(jí)別與當(dāng)前進(jìn)程的進(jìn)程號(hào),便于進(jìn)行后期的跟蹤與數(shù)據(jù)分析。

附圖說(shuō)明

為了實(shí)現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來(lái)描述某些說(shuō)明性方面,這些方面指示了可以實(shí)踐本文所公開(kāi)的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護(hù)的主題的范圍內(nèi)。通過(guò)結(jié)合附圖閱讀下面的詳細(xì)描述,本公開(kāi)的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯。遍及本公開(kāi),相同的附圖標(biāo)記通常指代相同的部件或元素。

圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的LFS系統(tǒng)中的日志處理方法100的流程圖;

圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的LFS系統(tǒng)中的日志處理裝置200的示意圖;以及

圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的日志服務(wù)器300的示意圖。

具體實(shí)施方式

下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的LFS系統(tǒng)中的日志處理方法100的示意圖。LFS系統(tǒng)中的日志處理方法100適于在金融終端設(shè)備中執(zhí)行,金融終端設(shè)備中駐留有LFS系統(tǒng),包括AP層、LFS管理器、SP層和設(shè)備驅(qū)動(dòng)層。其中,AP層即為應(yīng)用程序?qū)樱珹P為Application Program的英文縮寫,LFS管理器即為L(zhǎng)inux系統(tǒng)下的金融服務(wù)管理器,SP層即為服務(wù)提供層,SP為Service Provider的英文縮寫。LFS管理器向AP層提供API(Application Programming Interface)接口,SP層向LFS管理器提供SPI(Service Provider Interface)接口。

如圖1所示,方法100適于步驟S110。在步驟S110中,獲取當(dāng)前進(jìn)程調(diào)用LFS管理器提供的日志寫入接口所傳入的當(dāng)前日志文本,當(dāng)前進(jìn)程為AP進(jìn)程和SP進(jìn)程中的任一種。在本實(shí)施例中,當(dāng)前進(jìn)程為SP進(jìn)程,當(dāng)前進(jìn)程調(diào)用LFS管理器提供的日志寫入接口,向其傳入日志文本。

隨后,進(jìn)入步驟S120。在步驟S120中,對(duì)當(dāng)前日志文本進(jìn)行日志級(jí)別設(shè)置,日志級(jí)別包括調(diào)試、信息、警告、錯(cuò)誤、致命錯(cuò)誤中任一種。在本實(shí)施例中,通過(guò)調(diào)用trace函數(shù)來(lái)設(shè)置當(dāng)前日志文本對(duì)應(yīng)的日志級(jí)別,日志級(jí)別共計(jì)5種,分別為調(diào)試、信息、警告、錯(cuò)誤和致命錯(cuò)誤。其中,調(diào)試是指為了調(diào)試整個(gè)系統(tǒng)而打開(kāi)的一些調(diào)試信息,在系統(tǒng)穩(wěn)定運(yùn)行時(shí)可將該類信息關(guān)閉;信息是指所有關(guān)鍵性動(dòng)作點(diǎn)及其對(duì)應(yīng)結(jié)果;警告是指為了記錄當(dāng)系統(tǒng)接近一些資源臨界值或者已經(jīng)出現(xiàn)了一些資源不夠用或系統(tǒng)錯(cuò)誤,暫時(shí)還不至于影響整個(gè)系統(tǒng)的運(yùn)行但需要引起注意的信息;錯(cuò)誤表示系統(tǒng)發(fā)生了一些錯(cuò)誤,將錯(cuò)誤的信息記錄下來(lái);致命錯(cuò)誤表示已經(jīng)出現(xiàn)了非常嚴(yán)重的問(wèn)題,需要將系統(tǒng)停止的信息。此時(shí),當(dāng)前日志文本的日志級(jí)別為錯(cuò)誤。實(shí)際上,trace函數(shù)內(nèi)部可根據(jù)當(dāng)前日志文本所記錄的內(nèi)容、對(duì)應(yīng)的當(dāng)前進(jìn)程的類型等進(jìn)行日志級(jí)別的設(shè)置。在日志級(jí)別設(shè)置完成后,trace函數(shù)將校驗(yàn)與當(dāng)前日志文本相關(guān)的參數(shù)的正確性。

在步驟S130中,通過(guò)復(fù)制當(dāng)前日志文本和對(duì)應(yīng)的日志級(jí)別,與當(dāng)前進(jìn)程的進(jìn)程號(hào)組合生成當(dāng)前日志信息。若當(dāng)前日志信息中的日志級(jí)別為錯(cuò)誤和致命錯(cuò)誤中任一種,則將當(dāng)前日志信息打印到當(dāng)前進(jìn)程的控制臺(tái)上。在本實(shí)施例中,當(dāng)前進(jìn)程的進(jìn)程號(hào)pid=40,則使用trace函數(shù)將當(dāng)前日志文本和對(duì)應(yīng)的日志級(jí)別通過(guò)內(nèi)存進(jìn)行復(fù)制后,與該進(jìn)程號(hào)組合生成當(dāng)前日志信息,最終得到一條日志級(jí)別為錯(cuò)誤、對(duì)應(yīng)的當(dāng)前進(jìn)程的進(jìn)程號(hào)為40的當(dāng)前日志信息。由于該當(dāng)前日志信息的日志級(jí)別為錯(cuò)誤,因此通過(guò)trace函數(shù)將當(dāng)前日志信息打印到當(dāng)前進(jìn)程的控制臺(tái)上。此時(shí),通過(guò)當(dāng)前進(jìn)程創(chuàng)建向當(dāng)前日志信息列表寫入當(dāng)前日志信息的寫入線程,將日志信息列表的線程鎖授予該寫入線程,該線程鎖的類型為pthread_mutex_t。

在步驟S140中,獲取內(nèi)存中日志信息列表的線程鎖,通過(guò)線程鎖將當(dāng)前日志信息寫入到日志信息列表中,并釋放線程鎖。寫入線程首先通過(guò)線程鎖訪問(wèn)日志信息列表,再將當(dāng)前日志信息寫入日志信息列表中進(jìn)行存儲(chǔ),日志信息列表以循環(huán)隊(duì)列的方式存儲(chǔ)日志信息。在本實(shí)施例中,獲取內(nèi)存中日志信息列表的線程鎖,通過(guò)調(diào)用pthread_mutex_lock函數(shù)來(lái)執(zhí)行日志信息列表的加鎖操作,此時(shí)僅有當(dāng)前進(jìn)程創(chuàng)建的寫入進(jìn)程可以訪問(wèn)日志信息列表,該寫入進(jìn)程將當(dāng)前日志信息寫入到日志信息列表中進(jìn)行存儲(chǔ)。在寫入操作執(zhí)行成功后,調(diào)用pthread_mutex_unlock函數(shù)對(duì)日志信息列表進(jìn)行解鎖,將線程鎖釋放掉,此后,其他的線程或進(jìn)程可以對(duì)日志信息列表進(jìn)行訪問(wèn)。

在步驟S150中,通過(guò)日志線程訪問(wèn)日志信息列表,將其中所有日志信息通過(guò)異步dbus消息發(fā)送至日志服務(wù)器,指示日志服務(wù)器將日志信息列表中所有日志信息寫入當(dāng)前日志文件中。首先,向日志線程發(fā)出日志信息列表中存儲(chǔ)了當(dāng)前日志信息的通知,日志線程收到該通知后,獲取日志信息列表的線程鎖,再通過(guò)該線程鎖訪問(wèn)日志信息列表,并通過(guò)異步dbus消息將所有日志信息發(fā)送至日志服務(wù)器。在本實(shí)施例中,通過(guò)trace函數(shù)來(lái)調(diào)用pthread_cond_signal函數(shù)以通知內(nèi)部的日志線程,向該日志線程發(fā)出日志列表中存儲(chǔ)了當(dāng)前日志信息的消息。當(dāng)日志線程接收到這一通知后,獲取日志信息列表的線程鎖,并通過(guò)調(diào)用pthread_mutex_lock函數(shù)來(lái)執(zhí)行日志信息列表的加鎖操作,此時(shí)僅有該日志線程可以訪問(wèn)日志信息列表。日志信息列表是以循環(huán)隊(duì)列的方式存儲(chǔ)日志信息,則日志線程對(duì)日志信息列表執(zhí)行循環(huán)讀取的操作,將存儲(chǔ)于日志信息列表中的日志信息依次讀取出來(lái),并通過(guò)調(diào)用異步dbus消息中的dbus_connection_send函數(shù)來(lái)將日志信息發(fā)送給遠(yuǎn)程的日志服務(wù)器。若日志線程已將日志信息列表中所有日志信息發(fā)送至日志服務(wù)器,則清空日志信息列表,釋放日志信息列表的線程鎖。此時(shí),日志線程調(diào)用pthread_mutex_unlock函數(shù)將線程鎖釋放,之后其他的線程或進(jìn)程可以對(duì)日志信息列表進(jìn)行訪問(wèn)。

日志服務(wù)器將日志信息列表中所有日志信息寫入當(dāng)前日志文件中包括判斷當(dāng)前日志文件的大小是否超過(guò)系統(tǒng)預(yù)設(shè)值;若當(dāng)前日志文件的大小未超過(guò)系統(tǒng)預(yù)設(shè)值,則將當(dāng)前日志信息寫入當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳;若當(dāng)前日志文件的大小已超過(guò)系統(tǒng)預(yù)設(shè)值,則將當(dāng)前日志文件進(jìn)行歸檔處理,同時(shí)重新生成日志文件作為新的當(dāng)前日志文件,將當(dāng)前日志信息寫入新的當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳。在本實(shí)施例中,以日志服務(wù)器接收到的一條日志信息為例進(jìn)行說(shuō)明,在該條日志信息中,日志級(jí)別為錯(cuò)誤,對(duì)應(yīng)的當(dāng)前進(jìn)程的進(jìn)程號(hào)為40。對(duì)遠(yuǎn)程的日志服務(wù)器而言,在實(shí)際處理過(guò)程中先創(chuàng)建日志服務(wù)器進(jìn)程,通過(guò)該進(jìn)程進(jìn)行相關(guān)的日志操作。若日志級(jí)別為錯(cuò)誤或致命錯(cuò)誤,則日志服務(wù)器進(jìn)程將日志信息在日志服務(wù)器的控制臺(tái)上打印出來(lái)。而上述日志信息的日志級(jí)別為錯(cuò)誤,因此將其在日志服務(wù)器的控制臺(tái)上進(jìn)行打印。同時(shí),日志服務(wù)器進(jìn)程在對(duì)接收到的日志信息進(jìn)行寫入操作前,需要先判斷日志服務(wù)器中的當(dāng)前日志文件的大小是否超過(guò)系統(tǒng)預(yù)設(shè)值。系統(tǒng)預(yù)設(shè)值為8192KB,此時(shí)日志服務(wù)器中的當(dāng)前日志文件為8215KB,超過(guò)了系統(tǒng)預(yù)設(shè)值,因此將當(dāng)前日志文件進(jìn)行歸檔處理,并重新生成日志文件作為新的當(dāng)前日志文件,將日志級(jí)別為錯(cuò)誤,對(duì)應(yīng)的當(dāng)前進(jìn)程的進(jìn)程號(hào)為40的日志信息寫入到新的當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳。寫入時(shí)刻為2016年5月9日15點(diǎn)34分25秒32毫秒,為24小時(shí)制,其對(duì)應(yīng)的精確到毫秒的時(shí)間戳是1462779265032。為了保證日志信息寫入當(dāng)前日志文件的及時(shí)性,日志服務(wù)器進(jìn)程還會(huì)調(diào)用fflush函數(shù)來(lái)刷新日志文件緩存,從而強(qiáng)制寫入日志信息。

圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的LFS系統(tǒng)中的日志處理裝置200的示意圖。如圖2所示,該裝置包括:獲取模塊210、設(shè)置模塊220、生成模塊230、第一寫入模塊240和發(fā)送模塊250。LFS系統(tǒng)中的日志處理裝置200還包括創(chuàng)建模塊、授予模塊、打印模塊和清空模塊(圖中均未示出)。其中,創(chuàng)建模塊位于生成模塊230和第一寫入模塊240之間,授予模塊位于創(chuàng)建模塊和第一寫入模塊240之間,打印模塊位于生成模塊和創(chuàng)建模塊之間,清空模塊位于發(fā)送模塊250之后。

獲取模塊210適于獲取當(dāng)前進(jìn)程調(diào)用LFS管理器提供的日志寫入接口所傳入的當(dāng)前日志文本,當(dāng)前進(jìn)程為AP進(jìn)程和SP進(jìn)程中的任一種。在本實(shí)施例中,當(dāng)前進(jìn)程為SP進(jìn)程,當(dāng)前進(jìn)程調(diào)用LFS管理器提供的日志寫入接口,向其傳入日志文本。

設(shè)置模塊220適于對(duì)當(dāng)前日志文本進(jìn)行日志級(jí)別設(shè)置,日志級(jí)別包括調(diào)試、信息、警告、錯(cuò)誤、致命錯(cuò)誤中任一種。在本實(shí)施例中,通過(guò)調(diào)用trace函數(shù)來(lái)設(shè)置當(dāng)前日志文本對(duì)應(yīng)的日志級(jí)別,日志級(jí)別共計(jì)5種,分別為調(diào)試、信息、警告、錯(cuò)誤和致命錯(cuò)誤。此時(shí),當(dāng)前日志文本的日志級(jí)別為錯(cuò)誤。實(shí)際上,trace函數(shù)內(nèi)部可根據(jù)當(dāng)前日志文本所記錄的內(nèi)容、對(duì)應(yīng)的當(dāng)前進(jìn)程的類型等進(jìn)行日志級(jí)別的設(shè)置。在日志級(jí)別設(shè)置完成后,trace函數(shù)將校驗(yàn)與當(dāng)前日志文本相關(guān)的參數(shù)的正確性。

生成模塊230適于通過(guò)復(fù)制當(dāng)前日志文本和對(duì)應(yīng)的日志級(jí)別,與當(dāng)前進(jìn)程的進(jìn)程號(hào)組合生成當(dāng)前日志信息。在本實(shí)施例中,當(dāng)前進(jìn)程的進(jìn)程號(hào)pid=40,則使用trace函數(shù)將當(dāng)前日志文本和對(duì)應(yīng)的日志級(jí)別通過(guò)內(nèi)存進(jìn)行復(fù)制后,與該進(jìn)程號(hào)組合生成當(dāng)前日志信息,最終得到一條日志級(jí)別為錯(cuò)誤、對(duì)應(yīng)的當(dāng)前進(jìn)程的進(jìn)程號(hào)為40的當(dāng)前日志信息。

打印模塊適于當(dāng)當(dāng)前日志信息中的日志級(jí)別為錯(cuò)誤和致命錯(cuò)誤中任一種時(shí),將當(dāng)前日志信息打印到當(dāng)前進(jìn)程的控制臺(tái)上。創(chuàng)建模塊適于通過(guò)當(dāng)前進(jìn)程創(chuàng)建向當(dāng)前日志信息列表寫入當(dāng)前日志信息的寫入線程。授予模塊適于通過(guò)當(dāng)前進(jìn)程將日志信息列表的線程鎖授予寫入線程。在本實(shí)施例中,當(dāng)前日志信息的日志級(jí)別為錯(cuò)誤,因此通過(guò)trace函數(shù)將當(dāng)前日志信息打印到當(dāng)前進(jìn)程的控制臺(tái)上。此時(shí),通過(guò)當(dāng)前進(jìn)程創(chuàng)建向當(dāng)前日志信息列表寫入當(dāng)前日志信息的寫入線程,將日志信息列表的線程鎖授予該寫入線程,該線程鎖的類型為pthread_mutex_t。

第一寫入模塊240適于獲取內(nèi)存中日志信息列表的線程鎖,通過(guò)線程鎖將當(dāng)前日志信息寫入到日志信息列表中,并釋放線程鎖。第一寫入模塊240進(jìn)一步適于寫入線程通過(guò)線程鎖訪問(wèn)日志信息列表,將當(dāng)前日志信息寫入日志信息列表中進(jìn)行存儲(chǔ),日志信息列表以循環(huán)隊(duì)列的方式存儲(chǔ)日志信息。在本實(shí)施例中,獲取內(nèi)存中日志信息列表的線程鎖,通過(guò)調(diào)用pthread_mutex_lock函數(shù)來(lái)執(zhí)行日志信息列表的加鎖操作,此時(shí)僅有當(dāng)前進(jìn)程創(chuàng)建的寫入進(jìn)程可以訪問(wèn)日志信息列表,該寫入進(jìn)程將當(dāng)前日志信息寫入到日志信息列表中進(jìn)行存儲(chǔ)。在寫入操作執(zhí)行成功后,調(diào)用pthread_mutex_unlock函數(shù)對(duì)日志信息列表進(jìn)行解鎖,將線程鎖釋放掉,此后,其他的線程或進(jìn)程可以對(duì)日志信息列表進(jìn)行訪問(wèn)。

發(fā)送模塊250適于通過(guò)日志線程訪問(wèn)日志信息列表,將其中所有日志信息通過(guò)異步dbus消息發(fā)送至日志服務(wù)器,指示日志服務(wù)器將日志信息列表中所有日志信息寫入當(dāng)前日志文件中。發(fā)送模塊250進(jìn)一步適于向日志線程發(fā)出日志信息列表中存儲(chǔ)了當(dāng)前日志信息的通知,日志線程收到通知后,獲取日志信息列表的線程鎖,通過(guò)線程鎖訪問(wèn)日志信息列表,并通過(guò)異步dbus消息將所有日志信息發(fā)送至日志服務(wù)器。在本實(shí)施例中,通過(guò)trace函數(shù)來(lái)調(diào)用pthread_cond_signal函數(shù)以通知內(nèi)部的日志線程,向該日志線程發(fā)出日志列表中存儲(chǔ)了當(dāng)前日志信息的消息。當(dāng)日志線程接收到這一通知后,獲取日志信息列表的線程鎖,并通過(guò)調(diào)用pthread_mutex_lock函數(shù)來(lái)執(zhí)行日志信息列表的加鎖操作,此時(shí)僅有該日志線程可以訪問(wèn)日志信息列表。日志信息列表是以循環(huán)隊(duì)列的方式存儲(chǔ)日志信息,則日志線程對(duì)日志信息列表執(zhí)行循環(huán)讀取的操作,將存儲(chǔ)于日志信息列表中的日志信息依次讀取出來(lái),并通過(guò)調(diào)用異步dbus消息中的dbus_connection_send函數(shù)來(lái)將日志信息發(fā)送給遠(yuǎn)程的日志服務(wù)器。

清空模塊適于當(dāng)日志線程已將日志信息列表中所有日志信息發(fā)送至日志服務(wù)器時(shí),清空日志信息列表,釋放日志信息列表的線程鎖。在本實(shí)施例中,若日志線程已將日志信息列表中所有日志信息發(fā)送至日志服務(wù)器,則清空日志信息列表,釋放日志信息列表的線程鎖。此時(shí),日志線程調(diào)用pthread_mutex_unlock函數(shù)將線程鎖釋放,之后其他的線程或進(jìn)程可以對(duì)日志信息列表進(jìn)行訪問(wèn)。

圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的日志服務(wù)器300的示意圖。如圖3所示,該裝置包括:接收模塊310、判斷模塊320、第二寫入模塊330、歸檔模塊340和第三寫入模塊350。

接收模塊310適于接收金融終端設(shè)備發(fā)送的日志信息列表中的所有日志信息。

判斷模塊320適于判斷當(dāng)前日志文件的大小是否超過(guò)系統(tǒng)預(yù)設(shè)值。在本實(shí)施例中,系統(tǒng)預(yù)設(shè)值為8192KB。

第二寫入模塊330適于當(dāng)當(dāng)前日志文件的大小未超過(guò)系統(tǒng)預(yù)設(shè)值時(shí),將當(dāng)前日志信息寫入當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳。

歸檔模塊340適于當(dāng)當(dāng)前日志文件的大小已超過(guò)系統(tǒng)預(yù)設(shè)值時(shí),將當(dāng)前日志文件進(jìn)行歸檔處理。在本實(shí)施例中,日志服務(wù)器中的當(dāng)前日志文件為8215KB,超過(guò)了系統(tǒng)預(yù)設(shè)值,因此將當(dāng)前日志文件進(jìn)行歸檔處理。

第三寫入模塊350適于當(dāng)當(dāng)前日志文件的大小已超過(guò)系統(tǒng)預(yù)設(shè)值時(shí),重新生成日志文件作為新的當(dāng)前日志文件,將當(dāng)前日志信息寫入新的當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳。在本實(shí)施例中,由于當(dāng)前日志文件的大小已超過(guò)系統(tǒng)預(yù)設(shè)值,則重新生成日志文件作為新的當(dāng)前日志文件,將日志級(jí)別為錯(cuò)誤,對(duì)應(yīng)的當(dāng)前進(jìn)程的進(jìn)程號(hào)為40的日志信息寫入到新的當(dāng)前日志文件中,并添加寫入時(shí)刻對(duì)應(yīng)的時(shí)間戳。寫入時(shí)刻為2016年5月9日15點(diǎn)34分25秒32毫秒,其對(duì)應(yīng)的精確到毫秒的時(shí)間戳是1462779265032。為了保證日志信息寫入當(dāng)前日志文件的及時(shí)性,日志服務(wù)器進(jìn)程還會(huì)調(diào)用fflush函數(shù)來(lái)刷新日志文件緩存,從而強(qiáng)制寫入日志信息。

關(guān)于日志處理的具體步驟以及實(shí)施例,在基于圖1的描述中已經(jīng)詳細(xì)公開(kāi),此處不再贅述。

現(xiàn)有的LFS系統(tǒng)中的日志處理的方法,一般是在調(diào)用正常功能之前先調(diào)用日志寫入接口,直接將日志信息寫入日志文件,沒(méi)有實(shí)行進(jìn)程隔離操作,而且存在大量混雜在一起的日志信息。根據(jù)本發(fā)明實(shí)施例的LFS系統(tǒng)中的日志處理的技術(shù)方案,將當(dāng)前日志信息寫入內(nèi)存中的日志信息列表采用了異步處理方式,同時(shí)還利用異步dbus消息將日志信息列表中的所有日志信息發(fā)送至遠(yuǎn)程的日志服務(wù)器,進(jìn)一步保證了日志處理的異步性。此外,通過(guò)dbus消息將日志寫入接口與遠(yuǎn)程的日志服務(wù)器中的日志文件的訪問(wèn)接口分割開(kāi),保證了IO錯(cuò)誤與性能瓶頸不會(huì)影響到系統(tǒng)的正常功能,既隔離了錯(cuò)誤,又提高了性能,提供了很好的可擴(kuò)展性。而且,當(dāng)前日志信息中包含有對(duì)應(yīng)的日志級(jí)別與當(dāng)前進(jìn)程的進(jìn)程號(hào),可以對(duì)比其他的日志文件,便于進(jìn)行后期的跟蹤與數(shù)據(jù)分析。

B11.如B10所述的裝置,還包括授予模塊,適于通過(guò)當(dāng)前進(jìn)程將日志信息列表的線程鎖授予所述寫入線程。

B12.如B11所述的裝置,所述第一寫入模塊進(jìn)一步適于:

寫入線程通過(guò)所述線程鎖訪問(wèn)日志信息列表;

將當(dāng)前日志信息寫入日志信息列表中進(jìn)行存儲(chǔ),所述日志信息列表以循環(huán)隊(duì)列的方式存儲(chǔ)日志信息。

B13.如B9-12中任一項(xiàng)所述的裝置,還包括打印模塊,適于當(dāng)當(dāng)前日志信息中的日志級(jí)別為錯(cuò)誤和致命錯(cuò)誤中任一種時(shí),將當(dāng)前日志信息打印到當(dāng)前進(jìn)程的控制臺(tái)上。

B14.如B9-12中任一項(xiàng)所述的裝置,所述發(fā)送模塊進(jìn)一步適于:

向日志線程發(fā)出日志信息列表中存儲(chǔ)了當(dāng)前日志信息的通知;

日志線程收到所述通知后,獲取日志信息列表的線程鎖;

通過(guò)所述線程鎖訪問(wèn)日志信息列表,并通過(guò)異步dbus消息將所有日志信息發(fā)送至日志服務(wù)器。

B15.如B14所述的方法,還包括清空模塊,適于當(dāng)日志線程已將日志信息列表中所有日志信息發(fā)送至日志服務(wù)器時(shí),清空日志信息列表,釋放日志信息列表的線程鎖。

在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下被實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。

類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。

本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)理解在本文所公開(kāi)的示例中的設(shè)備的模塊或單元或組件可以布置在如該實(shí)施例中所描述的設(shè)備中,或者可替換地可以定位在與該示例中的設(shè)備不同的一個(gè)或多個(gè)設(shè)備中。前述示例中的模塊可以組合為一個(gè)模塊或者此外可以分成多個(gè)子模塊。

本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。

此外,所述實(shí)施例中的一些在此被描述成可以由計(jì)算機(jī)系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實(shí)施的方法或方法元素的組合。因此,具有用于實(shí)施所述方法或方法元素的必要指令的處理器形成用于實(shí)施該方法或方法元素的裝置。此外,裝置實(shí)施例的在此所述的元素是如下裝置的例子:該裝置用于實(shí)施由為了實(shí)施該發(fā)明的目的的元素所執(zhí)行的功能。

如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來(lái)描述普通對(duì)象僅僅表示涉及類似對(duì)象的不同實(shí)例,并且并不意圖暗示這樣被描述的對(duì)象必須具有時(shí)間上、空間上、排序方面或者以任意其它方式的給定順序。

盡管根據(jù)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是受益于上面的描述,本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設(shè)想其它實(shí)施例。此外,應(yīng)當(dāng)注意,本說(shuō)明書中使用的語(yǔ)言主要是為了可讀性和教導(dǎo)的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權(quán)利要求書的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見(jiàn)的。對(duì)于本發(fā)明的范圍,對(duì)本發(fā)明所做的公開(kāi)是說(shuō)明性的,而非限制性的,本發(fā)明的范圍由所附權(quán)利要求書限定。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
四平市| 青阳县| 怀宁县| 阿克苏市| 中西区| 玛纳斯县| 富宁县| 洛浦县| 东源县| 阿拉善盟| 札达县| 洞口县| 阿图什市| 互助| 普格县| 平顺县| 新泰市| 炉霍县| 漾濞| 华坪县| 神木县| 巫溪县| 咸宁市| 营口市| 龙州县| 桐城市| 北碚区| 道孚县| 隆尧县| 龙门县| 莫力| 兴国县| 平果县| 北川| 永登县| 沈丘县| 孟津县| 徐水县| 尉氏县| 柳州市| 奈曼旗|