本申請涉及計算機領(lǐng)域,尤其涉及一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的方法及裝置。
背景技術(shù):
系統(tǒng)日志中記錄著系統(tǒng)中硬件、軟件和系統(tǒng)的信息,是系統(tǒng)中重要的一部分。例如,系統(tǒng)中應(yīng)用出現(xiàn)的錯誤信息會以日志的方式記錄在日志文件中,管理員即使在系統(tǒng)發(fā)生錯誤的當(dāng)時沒有及時對系統(tǒng)進行維護,也可以在事后根據(jù)日志文件中記錄的出錯信息對系統(tǒng)進行調(diào)試,從而提高系統(tǒng)的性能。
在系統(tǒng)日志編寫的過程中通常要采用相應(yīng)的日志框架,其中,一些日志框架編寫的日志在調(diào)整日志級別時,采用加載配置文件的方式。例如,在Java應(yīng)用系統(tǒng)中,采用Log4j日志框架編寫的日志就是通過提供配置文件的方式來控制日志級別,但是配置文件一旦被系統(tǒng)加載后,日志的級別將無法調(diào)整。
技術(shù)實現(xiàn)要素:
鑒于上述問題,本申請實施例提供一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的方法,解決了Java系統(tǒng)中日志級別不能調(diào)整的問題。
本申請實施例采用下述技術(shù)方案:接收用戶發(fā)送的調(diào)整日志級別的指令,所述指令包括待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別之間的對應(yīng)關(guān)系;根據(jù)所述日志名稱在Java應(yīng)用系統(tǒng)當(dāng)前日志中查找與所述日志名稱對應(yīng)的待調(diào)整日志級別的日志;在查找到所述待調(diào)整日志級別的日志后,根據(jù)所述指令中的對應(yīng)關(guān)系將所述待調(diào)整日志級別的日志的級別調(diào)整成目標(biāo)日志級別。
優(yōu)選地,所述在接收用戶發(fā)送的調(diào)整日志級別的指令后,所述方法還包括:
根據(jù)接收到的通訊內(nèi)容規(guī)則解析用戶發(fā)送的調(diào)整日志級別的指令,獲得所述待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別之間的對應(yīng)關(guān)系。
優(yōu)選地,所述調(diào)整日志級別的指令是按照所述通訊內(nèi)容規(guī)則編寫的指令,所述通訊內(nèi)容規(guī)則包括:
將所述待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別之間建立對應(yīng)關(guān)系。
優(yōu)選地,所述接收通訊內(nèi)容規(guī)則具體包括:
在控制臺接收用戶發(fā)送的推送命令后,服務(wù)端或客戶端接收控制臺發(fā)送通訊內(nèi)容規(guī)則,所述推送命令觸發(fā)所述控制臺向服務(wù)端或客戶端發(fā)送所述通訊內(nèi)容規(guī)則。
優(yōu)選地,所述控制臺發(fā)送通訊內(nèi)容規(guī)則包括:
在用戶發(fā)送調(diào)整日志級別的指令之前,向服務(wù)端或客戶端發(fā)送通訊內(nèi)容規(guī)則;或,
在用戶發(fā)送調(diào)整日志級別的指令的同時,向服務(wù)端或客戶端發(fā)送通訊內(nèi)容規(guī)則;或,
在用戶發(fā)送調(diào)整日志級別的指令之后,向服務(wù)端或客戶端發(fā)送通訊內(nèi)容規(guī)則。
優(yōu)選地,所述用戶發(fā)送推送命令的方式包括:
用戶通過按動按鈕或按鍵向控制臺發(fā)送推送命令;或,
用戶通過觸摸觸摸屏向控制臺發(fā)送推送命令。
優(yōu)選地,所述在根據(jù)所述指令中的對應(yīng)關(guān)系將待調(diào)整日志級別的日志的級別調(diào)整成目標(biāo)日志級別之后,向用戶顯示調(diào)整成功。
優(yōu)選地,所述方法是應(yīng)用于對基于Log4j日志框架編寫的日志的日志級別進行調(diào)整的方法。
優(yōu)選地,所述裝置存在于服務(wù)端或客戶端中,該裝置包括:
第一接收單元、查找單元和調(diào)整單元;其中,
所述第一接收單元,用于接收用戶發(fā)送的調(diào)整日志級別的指令,所述指令包括待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別之間的對應(yīng)關(guān)系;
所述查找單元,用于根據(jù)所述日志名稱在Java應(yīng)用系統(tǒng)當(dāng)前日志中查找與所述日志名稱對應(yīng)的待調(diào)整日志級別的日志;
所述調(diào)整單元,用于在查找到所述待調(diào)整日志級別的日志后,根據(jù)所述指令中的對應(yīng)關(guān)系將所述待調(diào)整日志級別的日志的級別調(diào)整成目標(biāo)日志級別。
優(yōu)選地,所述裝置還包括:
解析單元、第二接收單元;其中,
所述解析單元,用于在接收用戶發(fā)送的調(diào)整日志級別的指令之后,根據(jù)接收到的通訊內(nèi)容規(guī)則解析用戶發(fā)送的調(diào)整日志級別的指令的語義,得到所述待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別的對應(yīng)關(guān)系;
所述第二接收單元,用于在控制臺接收用戶發(fā)送的推送命令后,接收控制臺發(fā)送通訊內(nèi)容規(guī)則。
針對現(xiàn)有技術(shù)中日志級別不能調(diào)整的問題,本申請實施例提供的方法可以使用戶根據(jù)實際應(yīng)用的需要實時地向服務(wù)端或客戶端發(fā)送調(diào)整日志級別的指令,使服務(wù)端或客戶端根據(jù)接收到的調(diào)整日志級別的指令后,可以對日志級別進行動態(tài)地地調(diào)整。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
圖1為本申請實施例提供的一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的方法的具體流程示意圖;
圖2為本申請實施例提供的一種針對調(diào)整日志級別的指令作健壯性處理的流程示意圖;
圖3為本申請實施例提供的一種服務(wù)端或客戶端獲得通訊內(nèi)容規(guī)則的方式的具體流程示意圖;
圖4為本申請實施例提供的一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的裝置的具體結(jié)構(gòu)示意圖。
具體實施方式
為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本申請具體實施例及相應(yīng)的附圖對本申請技術(shù)方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
本申請實施例提供了一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的方法,用于動態(tài)地調(diào)整Java應(yīng)用系統(tǒng)中日志的級別。在Java應(yīng)用系統(tǒng)中,編寫日志時通常要采用相應(yīng)的日志框架,例如:Log4j、Logback日志框架等。為了更清楚的說明本申請實施例,本申請實施例以Log4j日志框架編寫的日志為例進行說明。
在說明本申請實施例前,有必要對Log4j日志框架編寫的日志的特點進行說明,Log4j日志框架編寫的日志可以包括但不限于以下兩種特點:
特點一:Log4j日志采用等級化設(shè)計:
在Java應(yīng)用系統(tǒng)日志中通常采用OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL等幾個級別來進行分類,其中,ERROR、WARN、INFO、DEBUG是Java應(yīng)用系統(tǒng)最常用的四個日志級別,在使用的過程中會對這四個級別日志規(guī)定優(yōu)先級,該優(yōu)先級一般規(guī)定為:DEBUG<INFO<WARN<ERROR,系統(tǒng)通過定義日志級別控制日志的輸出。例如系統(tǒng)此時定義的日志級別為INFO,則系統(tǒng)會將INFO級別以上包括INFO級別的日志輸出,即輸出的日志級別為:INFO、WARN和ERROR。
特點二:Log4j日志采用樹形可繼承的層次結(jié)構(gòu)設(shè)計:
在Log4j層次結(jié)構(gòu)中,一般是以日志的名稱作為標(biāo)識,例如,最頂層的日志名稱為ROOT,這時ROOT日志就被默認(rèn)為所有日志的根日志,系統(tǒng)中除了ROOT日志以外的其它所有日志都會直接或者間接的繼承ROOT的特性,例如,com是ROOT的子日志,系統(tǒng)在定義ROOT日志時會規(guī)定ROOT日志的級別,假如規(guī)定ROOT日志的級別為INFO,但是如果系統(tǒng)對子日志com沒有規(guī)定級別,這時子日志com將直接繼承ROOT日志的級別,即此時子日志com的級別默認(rèn)為INFO。在編寫的過程中如果日志com需要建立自己的子日志時,日志的名稱必須以“com.”開頭,例如:com.xxx。同樣,這里如果沒有對com.xxx日志的級別進行自定義的情況下,com.xxx日志將繼承com日志的級別,而com日志做為ROOT日志的子日志在沒有自定義日志級別的情況下也將繼承ROOT日志的級別,這時com.xxx日志間接的繼承了ROOT日志的級別。
另外,為明確起見,針對本申請實施例的應(yīng)用場景進行說明:用戶在調(diào)整日志級別時可能是在服務(wù)端對日志的級別進行調(diào)整,也可能是用戶在客戶端對日志級別進行調(diào)整,例如用戶作為管理員在客戶端對其它服務(wù)器中的日志的級別進行調(diào)整。
下面針對本申請實施例提供的一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的方法進行說明,該方法的具體流程示意圖如圖1所示,具體包括下述步驟:
步驟11:接收用戶發(fā)送的調(diào)整日志級別的指令,所述指令包括待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別之間的對應(yīng)關(guān)系。
在本步驟中,用戶想要對Java應(yīng)用系統(tǒng)中的某部分日志的日志級別做調(diào)整,從而使該日志輸出或者不讓其輸出。例如,在雙十一淘寶促銷時,系統(tǒng)因為需要處理大量的業(yè)務(wù)需要關(guān)閉淘寶中一部分非關(guān)鍵業(yè)務(wù)信息來節(jié)約系統(tǒng)資源,這時就需要用戶動態(tài)地控制系統(tǒng)日志的輸出。
再例如,在Java應(yīng)用系統(tǒng)的部署中,一般會存在線上環(huán)境和線下環(huán)境,在線上環(huán)境時,由于調(diào)試級別的日志內(nèi)容比較龐大,為了避免影響線上環(huán)境下系統(tǒng)的運行速率,一般會關(guān)閉調(diào)試級別日志的輸出,這時就會給想要根據(jù)該調(diào)試 級別日志來調(diào)試系統(tǒng)的用戶帶來了不便,如果用戶可以將需要用到的調(diào)試級別的日志所對應(yīng)的日志級別進行調(diào)整,使這部分日志正常輸出,用戶就可以根據(jù)輸出的日志對系統(tǒng)進行調(diào)試,而且因為輸出日志的只是系統(tǒng)調(diào)試級別日志中的一部分,因此對線上環(huán)境下系統(tǒng)的運行速率影響較小。
又例如,在一些應(yīng)用場景下對某應(yīng)用系統(tǒng)進行升級時有時會引入相關(guān)的jar包,通常情況下,這些jar包控制著日志的輸出,如果該日志的框架采用的是Log4j日志框架,因為Log4j日志框架編寫的日志的配置文件一旦加載,日志的級別將無法調(diào)整,所以用戶就無法控制該jar包中日志的輸出,而且這些jar包升級時需要消耗系統(tǒng)的資源,由于無法控制jar包中日志的輸出,用戶也就無法控制這種資源的消耗,如果用戶可以調(diào)整上述jar包中的日志級別,使該jar包中的日志合理的輸出,這樣就可以減少系統(tǒng)資源的消耗。
大部分的Java應(yīng)用系統(tǒng)中經(jīng)常使用Log4j日志框架來編寫日志,Log4j日志框架編寫的日志一般是按照日志級別的先后控制日志的輸出。在本步驟中,假如用戶想要對Log4j日志框架編寫的日志中的某部分日志的日志級別進行調(diào)整,首先用戶要向服務(wù)端或客戶端發(fā)送具體的調(diào)整日志級別的指令,例如,在某應(yīng)用場景下,將Java應(yīng)用系統(tǒng)中日志的輸出級別設(shè)置為INFO,則服務(wù)器將INFO以及INFO級別以上的日志輸出,例如輸出日志對應(yīng)的日志級別分別為INFO、WARN和ERROR,假如在該應(yīng)用場景下其中的一個子日志com.xxx的級別為WARN,但用戶不想讓該子日志輸出,就可以將com.xxx的日志級別做調(diào)整,例如將com.xxx的級別改成DEBUG,這時服務(wù)器就不會將com.xxx的日志內(nèi)容輸出,這里“將com.xxx的級別改成DEBUG”就是調(diào)整日志級別的指令。
用戶在編寫調(diào)整日志級別的指令時必須按照用戶與服務(wù)端或客戶端之間建立的通訊內(nèi)容規(guī)則編寫指令,然后服務(wù)端或客戶端才能根據(jù)該通訊內(nèi)容規(guī)則對用戶發(fā)來的調(diào)整日志級別的指令進行解析,從而獲得該指令的語義,解析出該調(diào)整日志級別的指令的語義后,再根據(jù)該語義進行相應(yīng)的調(diào)整日志級別的操 作,其中,為了讓服務(wù)端或客戶端更清楚的理解該調(diào)整日志級別指令的語義,用戶編寫的通訊內(nèi)容規(guī)則要結(jié)合Log4j日志框架編寫的日志的特點,這里通訊內(nèi)容規(guī)則的內(nèi)容可以是將待調(diào)整日志級別的日志的日志名稱與該日志的級別建立對應(yīng)關(guān)系,例如通訊內(nèi)容規(guī)則可以是“日志名稱=日志級別”,例如,用戶向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令為“ROOT=INFO”,服務(wù)端或客戶端根據(jù)“日志名稱=日志級別”的通訊內(nèi)容規(guī)則將該調(diào)整日志級別的指令的語義解析出來,即“將根日志ROOT的日志級別改為INFO”,這里“日志名稱=日志級別”的通訊內(nèi)容規(guī)則只是示例性的說明,并沒有對通訊內(nèi)容規(guī)則作具體限定。另外,如果用戶想要同時發(fā)送多個調(diào)整日志級別的指令時,在通訊內(nèi)容規(guī)則中為避免服務(wù)端或客戶端解析錯誤,可以設(shè)計合理的分隔符,例如,用戶可以向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令為“ROOT=DEBUG,com=INFO”,其中半角的“,”就是通訊內(nèi)容規(guī)則中規(guī)定的分隔符,服務(wù)端或客戶端接收到該調(diào)整日志級別的指令后,將該指令解析為:將根日志ROOT的日志級別改為DEBUG,子日志的com的日志級別改為INFO。如果用戶向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令為空時,服務(wù)端或客戶端對該應(yīng)用系統(tǒng)中的日志級別不做任何調(diào)整,保持應(yīng)用系統(tǒng)原始配置的日志級別。
另外,因為該調(diào)整日志級別的指令是用戶自行編寫的,有時用戶會在編寫指令的過程中出現(xiàn)失誤,針對該問題服務(wù)端或客戶端可以對用戶編寫的調(diào)整日志級別的指令作健壯性處理。圖2為健壯性處理的具體流程圖,包括大小寫兼容處理、空格兼容處理、重復(fù)定義處理,無效格式處理和追加式容錯處理,其中這五個針對調(diào)整日志級別的指令的處理方式只是示例性的說明,還可能有其它處理方式,且圖2顯示服務(wù)端或客戶端執(zhí)行上述的五個處理方式的順序也是示例性的說明,用戶可以根據(jù)具體操作自行設(shè)定處理順序。以下將針對這五個處理方式進行具體說明:
1、大小寫兼容處理:如果用戶向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的 指令中出現(xiàn)大小寫編寫錯誤時,服務(wù)端或客戶端將默認(rèn)用戶編寫的調(diào)整日志級別的指令為正確的調(diào)整日志級別的指令。例如,系統(tǒng)中存儲的日志名稱為ROOT,用戶在向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令為“root=INFO”,此時服務(wù)端或客戶端將默認(rèn)用戶編寫的調(diào)整日志級別的指令為“ROOT=INFO”并執(zhí)行相關(guān)操作。
2、空格兼容處理:如果用戶向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令中出現(xiàn)多個空格時,服務(wù)端或客戶端將默認(rèn)用戶編寫的調(diào)整日志級別的指令為正確的調(diào)整日志級別的指令。例如,系統(tǒng)中存儲的日志名稱為ROOT,用戶在向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令為“R OOT=INFO”,此時服務(wù)端或客戶端將默認(rèn)用戶編寫的調(diào)整日志級別的指令為“ROOT=INFO”并執(zhí)行相關(guān)操作。
3、重復(fù)定義處理:如果用戶向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令中出現(xiàn)重復(fù)調(diào)整指令時,最后一個調(diào)整日志級別指令會覆蓋之前的日志調(diào)整指令。例如,用戶在向服務(wù)端或客戶端發(fā)送的調(diào)整調(diào)整日志級別的指令為“ROOT=INFO,ROOT=INFO”,此時服務(wù)端或客戶端將默認(rèn)用戶編寫的調(diào)整日志級別的指令為“ROOT=INFO”并執(zhí)行相關(guān)操作。
4、無效格式定義容錯處理:如果用戶向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令中出現(xiàn)無效格式時,服務(wù)端或客戶端將終止調(diào)整日志級別的操作,這里無效格式可以是日志級別錯誤或缺失,還可以是日志名稱或日志級別在系統(tǒng)中無法找到等。例如,用戶在向服務(wù)端或客戶端發(fā)送的調(diào)整日志級別的指令為“ROOT=IN”或者“com=”,服務(wù)端或客戶端將不會執(zhí)行調(diào)整日志級別操作;再例如用戶發(fā)送的調(diào)整日志級別的指令為“com.YYY=FATAL”如果系統(tǒng)中所有日志的名稱并沒有com.YYY,這時服務(wù)端或客戶端并不會執(zhí)行任何操作,或者雖然系統(tǒng)中有名稱為com.YYY的日志,但是系統(tǒng)設(shè)置的日志級別中沒有FATAL,這時服務(wù)端或客戶端同樣也不會執(zhí)行調(diào)整com.YYY的日志級別的操作。
5、追加式容錯處理:用戶在將調(diào)整日志級別的指令發(fā)送給服務(wù)端或客戶端時,可能會出現(xiàn)發(fā)送的調(diào)整日志級別的指令會將系統(tǒng)中其它日志的日志級別進行調(diào)整或者覆蓋,因此提出追加式容錯處理,即當(dāng)用戶發(fā)送調(diào)整日志指令后,服務(wù)端或客戶端只調(diào)整用戶指令中需要調(diào)整的日志級別的日志,而不影響其它級別的日志。例如,系統(tǒng)中的日志包括:ROOT(INFO)、com(INFO)、com.xxx(INFO),假如用戶發(fā)送的調(diào)整日志級別的指令為“com.xxx=WARN”,此時系統(tǒng)中日志將變?yōu)镽OOT(INFO)、com(INFO)、com.xxx(WARN),其中ROOT和com的日志級別不發(fā)生任何變化,也會不會被com.xxx(WARN)覆蓋。
上述步驟中,服務(wù)端或客戶端根據(jù)通訊內(nèi)容規(guī)則對用戶發(fā)來的調(diào)整日志級別的指令進行解析,其中服務(wù)端或客戶端獲得通訊內(nèi)容規(guī)則的方式有很多種,這里示例性的對其中一種方式進行說明,該方式的具體流程如圖3所示:第一步:用戶向控制臺發(fā)送推送命令,用戶發(fā)送推送命令的方式可以是用戶通過按動按鈕或按鍵向控制臺發(fā)送推送命令,或者用戶通過觸摸觸摸屏向控制臺發(fā)送推送命令等,這里通過用戶向控制臺發(fā)送推送命令,從而觸發(fā)控制臺向服務(wù)端或客戶端發(fā)送通信內(nèi)容規(guī)則;第二步:待控制臺接收到推送命令后,將用戶編寫的通訊內(nèi)容規(guī)則發(fā)送給服務(wù)端或客戶端,這里的服務(wù)端或客戶端可以是一個或者多個。當(dāng)有多個服務(wù)端或客戶端時,控制臺可以將完整的通訊內(nèi)容規(guī)則分別發(fā)給每個服務(wù)端或客戶端,然后每個服務(wù)端或客戶端根據(jù)通訊內(nèi)容規(guī)則中和自己有關(guān)的規(guī)則進行解析調(diào)整日志級別的指令的語義,也可以是控制臺根據(jù)每個服務(wù)端或客戶端所執(zhí)行的操作將通訊內(nèi)容規(guī)則拆分成多個規(guī)則,然后每個服務(wù)端或客戶端將只獲得和自己操作相關(guān)的規(guī)則,并根據(jù)該規(guī)則解析出調(diào)整日志級別的指令的語義。
另外,上述控制臺向服務(wù)端或客戶端發(fā)送通訊內(nèi)容規(guī)則,可以是在用戶發(fā)送調(diào)整日志級別的指令前或后,向服務(wù)端或客戶端發(fā)送通訊內(nèi)容規(guī)則;或者是在用戶發(fā)送調(diào)整日志級別指令的同時,向服務(wù)端或客戶端發(fā)送通訊內(nèi)容規(guī)則,這里的通訊內(nèi)容規(guī)則和調(diào)整日志級別指令可以編寫成一個整體發(fā)送給服務(wù)端 或客戶端,也可以是通訊內(nèi)容規(guī)則和調(diào)整日志級別指令作為兩部分內(nèi)容同時發(fā)送給服務(wù)端或客戶端。
步驟12:根據(jù)所述日志名稱在Java應(yīng)用系統(tǒng)當(dāng)前日志中查找與所述日志名稱對應(yīng)的待調(diào)整日志級別的日志。
服務(wù)端或客戶端在接受用戶發(fā)送的調(diào)整日志級別的指令后,首先將應(yīng)用系統(tǒng)當(dāng)前所有的日志以及該日志所對應(yīng)的日志級別建立倉儲,該倉儲的建立是根據(jù)每個日志的屬性以及命名進行建立,目的是為了便于用戶更好的管理日志。然后服務(wù)端或客戶端根據(jù)該指令中需要調(diào)整日志級別的日志的名稱,在上述建立的倉儲中查找與該日志名稱對應(yīng)的日志。
步驟13:在查找到所述待調(diào)整日志級別的日志后,根據(jù)所述指令中的對應(yīng)關(guān)系將所述待調(diào)整日志級別的日志的級別調(diào)整成目標(biāo)日志級別。
在步驟12中在系統(tǒng)建立的倉儲中查找到與該日志名稱對應(yīng)的待調(diào)整日志級別的日志后,就可以在應(yīng)用系統(tǒng)中找到與該日志對應(yīng)的日志級別,該日志級別是系統(tǒng)原來自動配置的日志級別,例如,服務(wù)端或客戶端通過Log4j中的應(yīng)用程序中的編程接口(API)找到日志級別;最后服務(wù)端或客戶端根據(jù)接收到的用戶發(fā)送的調(diào)試日志級別的指令調(diào)整對應(yīng)日志的級別,調(diào)整成功時,服務(wù)端或客戶端提示用戶調(diào)整成功。
在用戶成功調(diào)整日志級別后,將日志按照系統(tǒng)預(yù)定規(guī)則輸出,輸出的方式可以是按照系統(tǒng)規(guī)定日志級別的優(yōu)先級進行輸出,在這里不作具體限定。
用戶采用本申請實施例調(diào)整日志級別的過程中,可以根據(jù)實際應(yīng)用的需要實時地向服務(wù)端或客戶端發(fā)送調(diào)整日志級別指令,使服務(wù)端或客戶端根據(jù)接收到調(diào)整日志級別的指令后,對日志級別進行動態(tài)地調(diào)整。
另外,Java應(yīng)用系統(tǒng)中另外一種用戶經(jīng)常用到的日志框架Logback編寫的日志,在該日志輸出的過程中雖然可以調(diào)整日志級別,但是該調(diào)整日志級別方法的一般步驟是:首先系統(tǒng)通過掃描配置文件,查找到配置文件中用戶調(diào)整的日志級別,然后重新加載調(diào)整后的配置文件完成日志級別的調(diào)整,因為從掃描 配置文件到找到調(diào)整日志級別的位置浪費了一定的時間,所以系統(tǒng)有時無法做到實時地調(diào)整日志級別。而本申請實施例提供的調(diào)整日志級別的方法是根據(jù)調(diào)整日志級別指令在配置文件中直接調(diào)整日志的級別,相比Logback日志框架編寫的日志中調(diào)整日志級別的方法,節(jié)約了一定的時間,提高了調(diào)整日志級別的效率。
上述實施例提出了一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的方法,與之相應(yīng)地,本申請還提供了一種Java應(yīng)用系統(tǒng)中調(diào)整日志級別的裝置,該裝置用于在Java應(yīng)用系統(tǒng)中對系統(tǒng)日志的級別進行動態(tài)地、實時地調(diào)整。該裝置的結(jié)構(gòu)示意圖如圖4所示,具體包括:
第一接收單元41、查找單元42和調(diào)整單元43;其中,
第一接收單元41,可以用于接收用戶發(fā)送的調(diào)整日志級別的指令,該指令包括待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別之間的對應(yīng)關(guān)系;
查找單元42,可以用于根據(jù)所述日志名稱在Java應(yīng)用系統(tǒng)當(dāng)前日志中查找與該日志名稱對應(yīng)的待調(diào)整日志級別的日志;
調(diào)整單元43,可以用于在查找到所述待調(diào)整日志級別的日志后,根據(jù)該指令中的對應(yīng)關(guān)系將該待調(diào)整日志級別的日志的級別調(diào)整成目標(biāo)日志級別。
上述裝置的實施例中的工作過程是:首先接收單元41接收用戶發(fā)送的將日志級別改成目標(biāo)日志級別的調(diào)整日志級別指令,再由查找單元42根據(jù)該日志名稱在Java應(yīng)用系統(tǒng)當(dāng)前日志中查找與該日志名稱對應(yīng)的日志,在查找到該待調(diào)整日志級別的日志后,由調(diào)整單元43根據(jù)該指令中的待調(diào)整日志級別的日志的日志名稱與目標(biāo)日志級別之間的對應(yīng)關(guān)系,將該待調(diào)整日志級別的日志的級別調(diào)整成目標(biāo)日志級別。
上述裝置實施例獲得的有益效果與前述方法實施例獲得的有益效果相同或者類似,為避免重復(fù),這里不做贅述。
上述裝置實施例中調(diào)整Java應(yīng)用系統(tǒng)中日志級別的實施方式有很多種,在一種實施方式中,所述調(diào)整日志級別的裝置還包括解析單元、第二接收單元; 其中,
解析單元,可以用于在接收用戶發(fā)送的調(diào)整日志級別的指令之后,根據(jù)接收到的通訊內(nèi)容規(guī)則解析用戶發(fā)送的調(diào)整日志級別的指令的語義。
第二接收單元,可以用于待控制臺接收用戶發(fā)送的推送命令后,接收控制臺發(fā)送通訊內(nèi)容規(guī)則。
這里接收到的通訊內(nèi)容規(guī)則可以使服務(wù)端或客戶端準(zhǔn)確的解析用戶編寫的調(diào)整日志級別的指令,從而執(zhí)行相應(yīng)的調(diào)整日志級別的操作。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處 理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機可讀介質(zhì)的示例。
計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算 機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
以上僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。