專利名稱:一種日志服務處理方法及裝置的制作方法
技術領域:
本發(fā)明涉及日志服務技術領域,尤其涉及一種日志服務處理方法及裝置。
背景技術:
OSGi (公共服務平臺,open Service Gateway Initiative)是一個基于 Java 的服務規(guī)范,它是為那些需要長時間運行,動態(tài)更新并且對運行環(huán)境的影響盡可能小的系統(tǒng)制定的。并且,OSGi向Java提供服務,這些服務使Java成為軟件集成和軟件開發(fā)的首選環(huán)境。其中,OSGi聯(lián)盟已經(jīng)開發(fā)了例如日志、安全等很多公共功能的標準組件接口。目前的日志服務只有SLF4J是能夠運行到OSGi中的日志插件?;贠SGi的Java應用程序能夠應用該日志服務。而常見的另外一些日志服務如java.util, logging、simpleLogger, log4j等卻不能運行到OSGi中,所以也就不能被基于OSGi的Java應用程序應用。因此,急需一種日志服務處理方法,將不基于OSGi的日志服務轉換為基于OSGi的日志服務,進一步使基于OSGi的Java應用程序能夠通過一種通用的日志接口調(diào)用轉換后的日志服務。
發(fā)明內(nèi)容
為解決上述技術問題,本申請實施例提供一種日志服務處理方法,以達到集成多種類型的日志服務的目的,技術方案如下:一種日志服務處理方法,包括:在組件啟動后,傳遞所述組件的上下文對象到非公共服務平臺OSGi類型日志的工廠;保存所述組件的上下文對象到所述非OSGi類型日志的工廠;判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務;在所述非OSGi類型日志的工廠對應的日志服務已注冊的情況下,返回所述OSGi類型日志服務;在所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務。優(yōu)選的,判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務包括:根據(jù)日志讀取服務接口 LogReaderService判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務;所述日志讀取服務接口 LogReaderServic根據(jù)日志的類型和版本號判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務。優(yōu)選的,在所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務包括:
判斷所述非OSGi類型日志的工廠對應的日志服務是否存在于公共服務平臺OSGi中;在非OSGi類型日志的工廠對應的日志服務未存在于公共服務平臺OSGi中的情況下,添加所述非OSGi類型日志的工廠對應的日志服務并將所述非OSGi類型日志的工廠對應的日志服務注冊為OSGi類型日志服務;在非OSGi類型日志的工廠對應的日志服務存在于公共服務平臺OSGi中的情況下,將所述非OSGi類型日志的工廠對應的日志服務注冊為OSGi類型日志服務。優(yōu)選的,還包括:導出所述非OSGi類型日志的工廠對應的日志服務的接口,所述接口攜帶有版本號。優(yōu)選的,還包括:在所述非OSGi類型日志的工廠對應的日志服務注冊后,在輸出所述非OSGi類型日志的工廠對應的日志服務記錄的日志消息時,日志監(jiān)聽器接口 LogListener發(fā)送日志條目接口 LogEntry類型的日志條目至日志服務接口 LogService,獲取所述日志條目接口LogEntry對象對應的日志消息;還包括:在所述非OSGi類型日志的工廠對應的日志服務注冊后,以純服務的方式或者以嵌入的方式加載所述日志服務。一種日志服務處理裝置,包括:傳遞單元,用于在組件啟動后,傳遞所述組件的上下文對象到非公共服務平臺OSGi類型日志的工廠;存儲單元,用于保存?zhèn)鬟f單元傳遞的組件的上下文對象到所述非OSGi類型日志的工廠;第一判斷單元,用于判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務;返回單元,用于在第一判斷單元的判斷結果為所述非OSGi類型日志的工廠對應的日志服務已注冊的情況下,返回所述OSGi類型日志服務;第一注冊單元,用于在第一判斷單元的判斷結果為所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務。優(yōu)選的,第一判斷單元具體用于根據(jù)日志讀取服務接口 LogReaderService判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務;第一判斷單元具體用于根據(jù)日志的類型和版本號判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務。優(yōu)選的,第一注冊單元包括:第二判斷單元、添加單元和第二注冊單元;其中,第二判斷單元,用于判斷所述非OSGi類型日志的工廠對應的日志服務是否存在于公共服務平臺OSGi中;添加單元,用于在第二判斷單元的判斷結果為非OSGi類型日志的工廠對應的日志服務未存在于公共服務平臺OSGi中的情況下,添加所述非OSGi類型日志的工廠對應的日志服務;第二注冊單元,用于注冊所述添加單元添加的非OSGi類型日志的工廠對應的日志服務或用于在第二判斷單元的判斷結果為非OSGi類型日志的工廠對應的日志服務存在于公共服務平臺OSGi中的情況下,注冊所述非OSGi類型日志的工廠對應的日志服務。優(yōu)選的,還包括:導出單元,用于導出所述非OSGi類型日志的工廠對應的日志服務的接口,所述導出單元具體用于導出攜帶有版本號的所述非OSGi類型日志的工廠對應的日志服務的接□。優(yōu)選的,還包括:處理單元,用于在所述非OSGi類型日志的工廠對應的日志服務注冊后,在輸出所述非OSGi類型日志的工廠對應的日志服務記錄的日志消息時,日志監(jiān)聽器接口LogListener發(fā)送日志條目接口 LogEntry類型的日志條目至日志服務接口 LogService,獲取所述日志條目接口 LogEntry對象對應的日志消息;還包括:加載單元,用于在所述非OSGi類型日志的工廠對應的日志服務注冊后,以純服務的方式或者以嵌入的方式加載所述日志服務。與現(xiàn)有技術相比,本申請的有益效果是:在本申請中,在OSGi中可以創(chuàng)建非OSGi類型的日志服務并在OSGi中注冊該非OSGi類型的日志服務,將該非OSGi類型的日志服務轉換為基于OSGi的日志服務,達到集成多種類型的日志服務的目的,集成多種類型日志服務后,可以滿足基于OSGi的不同Java應用程序根據(jù)自己需求選擇適合自己的日志服務并對其進行應用的要求。
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本申請?zhí)峁┑囊环N日志服務處理方法的一種流程圖;圖2是本申請?zhí)峁┑囊环N日志服務處理方法中將未注冊的日志服務注冊為OSGi類型日志服務的一種流程圖;圖3是本申請?zhí)峁┑囊环N日志服務處理方法的另一種流程圖;圖4a是本申請?zhí)峁┑囊环N日志服務處理裝置的一種結構示意圖;圖4b是本申請?zhí)峁┑囊环N日志服務處理裝置中第一注冊單元的具體組成的一種結構示意圖;圖5是本申請?zhí)峁┑囊环N日志服務處理裝置的另一種結構示意圖。
具體實施例方式
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
本申請?zhí)峁┮环N日志服務處理方法,首先在組件啟動后,傳遞所述組件的上下文對象到非公共服務平臺OSGi類型日志的工廠,其次保存所述組件的上下文對象到所述非OSGi類型日志的工廠,然后判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務,在所述非OSGi類型日志的工廠對應的日志服務已注冊的情況下,返回所述OSGi類型日志服務,在所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務。以下將列舉實施例對本申請?zhí)峁┑囊环N日志服務處理方法進行詳細說明。一個實施例請參閱圖1,其示出了本申請?zhí)峁┑囊环N日志服務處理方法的一種流程圖,可以包括以下步驟:步驟Sll:在組件啟動后,傳遞所述組件的上下文對象到非公共服務平臺OSGi類型日志的工廠。在本實施例中,啟動公共服務平臺OSGi中的組件后,將公共服務平臺OSGi中的組件的上下文對象傳遞到非公共服務平臺OSGi類型日志的工廠。在接收公共服務平臺OSGi中的組件的上下文對象后,非公共服務平臺OSGi類型日志的工廠對應的日志服務就可以通過上下文對象注冊為OSGi類型日志服務或者從OSGi類型日志服務中讀取該非公共服務平臺OSGi類型日志的工廠對應的日志服務。在將公共服務平臺OSGi中的組件的上下文對象傳遞到非公共服務平臺OSGi類型日志的工廠后,執(zhí)行步驟S12。非公共服務平臺OSGi類型日志的工廠對應的日志服務可以使用公共服務平臺OSGi中的組件以實現(xiàn)日志服務功能。步驟S12:保存所述組件的上下文對象到所述非OSGi類型日志的工廠。在非OSGi類型日志的工廠接收到公共服務平臺OSGi中的組件的上下文對象后,保存該公共服務平臺OSGi中的組件的上下文對象。步驟S13:判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務。判斷非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務原因為:基于公共服務平臺OSGi的應用程序使用日志服務時,必須使用OSGi類型日志服務,即使用注冊在公共服務平臺OSGi中的日志服務。如果非OSGi類型日志的工廠對應的日志服務未注冊在公共服務平臺OSGi中,非OSGi類型日志的工廠對應的日志服務便不能使用公共服務平臺OSGi提供的日志服務功能的組件,即該非OSGi類型日志的工廠對應的日志服務并不會在公共服務平臺OSGi中運行。則進一步如果基于公共服務平臺OSGi的應用程序使用該非OSGi類型日志的工廠對應的日志服務時,基于公共服務平臺OSGi的應用程序不會得到該公共服務平臺OSGi的應用程序運行過程中記錄的日志。其中公共服務平臺OSGi提供服務注冊的功能,以實現(xiàn)將非OSGi類型日志的工廠對應的日志服務注冊為OSGi類型日志服務。在本實施例中,判斷非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務可以根據(jù)日志讀取服務接口 LogReaderService判斷。其中日志讀取服務接口 LogReaderService判斷非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務的具體過程為:根據(jù)日志讀取服務接口 LogReaderService的名稱查找日志讀取
服務接口 LogReaderService對應的服務的服務引用對象;在判斷該服務對象不為空時,從
非OSGi類型日志的工廠中保存的上下文對象中獲取日志讀取服務接口 LogReaderService
類型的對象;使用日志讀取服務接口 LogReaderService定義的getlog ()檢索日志讀取服
務接口 LogReaderService類型的對象對應的日志條目,在檢索到的日志條目中如果包括
該非OSGi類型日志的工廠對應的日志服務,則說明該非OSGi類型日志的工廠對應的日志
服務已注冊,否則,說明該非OSGi類型日志的工廠對應的日志服務未注冊。判斷過程可以
由如下代碼實現(xiàn),代碼為:Servic.eReferenc.eref=
權利要求
1.一種日志服務處理方法,其特征在于,包括: 在組件啟動后,傳遞所述組件的上下文對象到非公共服務平臺OSGi類型日志的工廠; 保存所述組件的上下文對象到所述非OSGi類型日志的工廠; 判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務; 在所述非OSGi類型日志的工廠對應的日志服務已注冊的情況下,返回所述OSGi類型日志服務; 在所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務。
2.根據(jù)權利要求1所述的方法,其特征在于,判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務包括: 根據(jù)日志讀取服務接口 LogReaderService判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務; 所述日志讀取服務接口 LogReaderServic根據(jù)日志的類型和版本號判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務。
3.根據(jù)權利要求1所述的方法,其特征在于,在所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務包括: 判斷所述非OSGi類型日志的工廠對應的日志服務是否存在于公共服務平臺OSGi中; 在非OSGi類型日志 的工廠對應的日志服務未存在于公共服務平臺OSGi中的情況下,添加所述非OSGi類型日志的工廠對應的日志服務并將所述非OSGi類型日志的工廠對應的日志服務注冊為OSGi類型日志服務; 在非OSGi類型日志的工廠對應的日志服務存在于公共服務平臺OSGi中的情況下,將所述非OSGi類型日志的工廠對應的日志服務注冊為OSGi類型日志服務。
4.根據(jù)權利要求1所述的方法,其特征在于,還包括: 導出所述非OSGi類型日志的工廠對應的日志服務的接口,所述接口攜帶有版本號。
5.根據(jù)權利要求1所述的方法,其特征在于,還包括: 在所述非OSGi類型日志的工廠對應的日志服務注冊后,在輸出所述非OSGi類型日志的工廠對應的日志服務記錄的日志消息時,日志監(jiān)聽器接口 LogListener發(fā)送日志條目接口 LogEntry類型的日志條目至日志服務接口 LogService,獲取所述日志條目接口LogEntry對象對應的日志消息; 所述方法還包括:在所述非OSGi類型日志的工廠對應的日志服務注冊后,以純服務的方式或者以嵌入的方式加載所述日志服務。
6.一種日志服務處理裝置,其特征在于,包括: 傳遞單元,用于在組件啟動后,傳遞所述組件的上下文對象到非公共服務平臺OSGi類型日志的工廠; 存儲單元,用于保存?zhèn)鬟f單元傳遞的組件的上下文對象到所述非OSGi類型日志的工廠; 第一判斷單元,用于判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務; 返回單元,用于在第一判斷單元的判斷結果為所述非OSGi類型日志的工廠對應的日志服務已注冊的情況下,返回所述OSGi類型日志服務; 第一注冊單元,用于在第一判斷單元的判斷結果為所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務。
7.根據(jù)權利要求6所述的裝置,其特征在于,第一判斷單元具體用于根據(jù)日志讀取服務接口 LogReaderService判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務; 第一判斷單元具體用于根據(jù)日志的類型和版本號判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務。
8.根據(jù)權利要求6所述的裝置,其特征在于,第一注冊單元包括:第二判斷單元、添加單元和第二注冊單元; 其中,第二判斷單元,用于判斷所述非OSGi類型日志的工廠對應的日志服務是否存在于公共服務平臺OSGi中; 添加單元,用于在第二判斷單元的判斷結果為非OSGi類型日志的工廠對應的日志服務未存在于公共服務平臺OSGi中的情況下,添加所述非OSGi類型日志的工廠對應的日志服務; 第二注冊單元,用于注冊所述添加單元添加的非OSGi類型日志的工廠對應的日志服務或用于在第二判斷單元的判斷結果為非OSGi類型日志的工廠對應的日志服務存在于公共服務平臺OSGi中的情況下,注冊所述非OSGi類型日志的工廠對應的日志服務。
9.根據(jù)權利要求6所述的裝置,其特征在于,還包括: 導出單元,用于導出所述非OSGi類型日志的工廠對應的日志服務的接口,所述導出單元具體用于導出攜帶有版本號的所述非OSGi類型日志的工廠對應的日志服務的接口。
10.根據(jù)權利要求6所述的裝置,其特征在于,還包括: 處理單元,用于在所述非OSGi類型日志的工廠對應的日志服務注冊后,在輸出所述非OSGi類型日志的工廠對應的日志服務記錄的日志消息時,日志監(jiān)聽器接口 LogListener發(fā)送日志條目接口 LogEntry類型的日志條目至日志服務接口 LogService,獲取所述日志條目接口 LogEntry對象對應的日志消息; 所述裝置,還包括: 加載單元,用于在所述非OSGi類型日志的工廠對應的日志服務注冊后, 以純服務的方式或者以嵌入的方式加載所述日志服務。
全文摘要
本申請?zhí)峁┝艘环N日志服務處理方法,包括在組件啟動后,傳遞所述組件的上下文對象到非公共服務平臺OSGi類型日志的工廠;保存所述組件的上下文對象到所述非OSGi類型日志的工廠;判斷所述非OSGi類型日志的工廠對應的日志服務是否已注冊為OSGi類型日志服務;在所述非OSGi類型日志的工廠對應的日志服務已注冊的情況下,返回所述OSGi類型日志服務;在所述非OSGi類型日志的工廠對應的日志服務未注冊的情況下,將所述日志服務注冊為OSGi類型日志服務。因此,本申請能夠集成多種類型的日志服務,集成多種類型日志服務后,可以滿足基于OSGi的不同Java應用程序根據(jù)自己需求選擇適合自己的日志服務并對其進行應用的要求。
文檔編號H04L12/24GK103095491SQ201210583988
公開日2013年5月8日 申請日期2012年12月30日 優(yōu)先權日2012年12月30日
發(fā)明者張權, 劉鵬, 尚秀穎, 李峰, 張青 申請人:山東中創(chuàng)軟件商用中間件股份有限公司