JDK日志框架介紹及其主要功能淺析
JDK日志框架是什么?JDK日志框架主要功能又是什么呢?JDK日志記錄對于軟件的維護(hù)特別是對于已部署到運(yùn)行環(huán)境之后的軟件調(diào)試都有著重要的意義。本文介紹了 JDK的日志框架,以及如何根據(jù)不同需求自定義日志處理、消息格式化、消息級別等組件。***闡述了如何利用日志框架的擴(kuò)展能力將Java 程序能夠通過 STAF(Software Testing Automation Framework,一種自動化測試框架)日志服務(wù)來進(jìn)行監(jiān)視。
自 Java 1.4 開始,JDK包括了一個嶄新的日志框架包 java.util.logging,該日志框架設(shè)計精良,和 JDK緊密結(jié)合,控制靈活,使用簡單。日志記錄對于軟件的維護(hù)特別是對于已部署到運(yùn)行環(huán)境之后的軟件調(diào)試都有著重要的意義。在實(shí)際的項(xiàng)目中,往往還需要比該框架所提供的更為復(fù)雜的日志功能。對于這種需求,JDK日志框架具有足夠的可擴(kuò)展能力,可以自定義不同需求的日志處理、消息格式化、日志消息級別等組件。在下面的內(nèi)容中,本文將介紹了如何擴(kuò)展 JDK日志框架,自定義日志處理方式。并就一個實(shí)際的例子來介紹如何結(jié)合 JDK日志框架和 STAF(Software Testing Automation Framework,一種自動化測試框架)日志服務(wù)來對 java 程序進(jìn)行監(jiān)視。
JDK日志框架介紹
JDK的日志框架即 java.util.logging 包。對于一個軟件的日志系統(tǒng)而言,首先必須得有一個日志對象,該對象負(fù)責(zé)記錄日志信息。同時該信息可以輸出到不同的位置,例如控制臺,文件甚至網(wǎng)絡(luò)中。對于信息的格式,則可以根據(jù)不同的需求,可以輸出成普通文本,XML 或者 Html 的格式。同時還需要對日志信息進(jìn)行不同級別的分類,這樣的好處是可以過濾冗余信息,只保留關(guān)鍵的日志。對于一個日志框架而言,日志對象必須是可配置的,它可以按照配置來輸出到指定的目標(biāo),同時按照配置來決定輸出的格式和決定何種級別以上的日志才能輸出。配置的形式還可以是多種多樣的,既能是代碼的形式,也能是配置文件的形式。尤其是配置文件的形式,對于一個已經(jīng)部署到運(yùn)行環(huán)境中的軟件而言,可以非常方便的改變?nèi)罩九渲枚鵁o需改變其源代碼。
JDK日志框架提供了上述的所有功能。它主要包括如下幾個部件:
◆Logger:日志記錄對象。用于記錄日志信息。
◆Handler:用于處理日志信息的輸出。在 Handler 類中,可以決定日志是輸出到文件中還是控制臺中。
◆Filter: 用于過濾日志。在 Filter 類中,可以根據(jù)日志級別或者某種條件來決定是否輸出該日志。這樣達(dá)到去除冗余信息的目的。
◆Formatter:用于格式化日志信息。該類可以將日志文本格式化成 XML 或者 Html 的格式,這完全依賴于具體的實(shí)現(xiàn)。
◆Level:用于表示日志的級別。 JDK日志框架默認(rèn)有如下級別 : SEVERE,WARNING,INFO,CONFIG,F(xiàn)INE,F(xiàn)INER,F(xiàn)INEST 。
對于程序而言,它的 Logger 對象首先會判斷日志的級別是否滿足輸出級別的要求,然后將滿足級別要求的日志消息交給所配置的 Handler 對象來處理,如果日志對象配置了一個 Filter 對象,那么 Filter 對象將會對日志信息做一次過濾。 Handler 對象接受到日志消息后,根據(jù)其所配置的格式化類 Formatter 來改變?nèi)罩镜母袷?,根?jù)所配置的 Filter 對象和 Level 對象來再次過濾日志信息,***輸出到該種 Handler 對象所指定的輸出位置中,該輸出位置可以是控制臺,文件,網(wǎng)絡(luò) socket 甚至是內(nèi)存緩沖區(qū)。
JDK 提供了如下幾種默認(rèn)支持的 Handler 類:
◆ConsoleHandler: 輸出日志到控制臺中
◆FileHandler:輸出日志到指定文件中
◆MemoryHandler:輸出日志到內(nèi)存緩沖區(qū)中,當(dāng)一定的條件滿足的時候(如某種關(guān)鍵字的日志信息)再將緩沖區(qū)中的日志輸出
◆SocketHandler: 輸出日志到網(wǎng)絡(luò) socket 中
◆StreamHandler: 輸出日志到輸入輸出流對象中
JDK日志框架的相關(guān)介紹就到這里,對于JDK日志框架的使用要在實(shí)踐中多加學(xué)習(xí)糾正,同時 JDK日志框架也不失其靈活性,你可以定制自己所需要的 Handler,我們在以后的文章中將會介紹到。
【編輯推薦】