系統(tǒng)日志的處理
在應用程序中添加日志記錄總的來說基于三個目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統(tǒng)計分析工作;跟蹤代碼運行時軌跡,作為日后審計的依據(jù);擔當集成開發(fā)環(huán)境中的調(diào)試器的作用,向文件或控制臺打印代碼的調(diào)試信息。
最普通的做法就是在代碼中嵌入許多的打印語句,這些打印語句可以輸出到控制臺或文件中,比較好的做法就是構(gòu)造一個日志操作類來封裝此類操作,而不是讓一系列的打印語句充斥了代碼的主體。
Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務 器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就 是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。
日志的級別
每條輸出的日志請求(logging request)也都有一個level,如果該request的level大于等于該 level,則該request將被處理(稱為enabled);否則該request將被忽略。故可得知:
1. logger的level越低,表示該logger越詳細
2. logging request的level越高,表示該logging request越優(yōu)先輸出
Level類中預定義了五個level,它們的大小關系如下:
Level.DEBUG < Level.INFO < Level.WARN < Level.ERROR < Level.FATAL
在代碼中打印日志
第一步是取得LOG,LOG采用APACHE的COMMON-LOGGING包來獲得。
protected static Log log = LogFactory.getLog(XXX.class);
第二步就是LOG的輸出,LOG輸出只需要填寫描述性文字,不要在LOG輸出中包含任何類名,時間,日志級別等信息。輸出LOG時必須檢測當前LOG的輸出配置情況。
if (log.isDebugEnabled()) {
log.debug("Initializing module path '" + config.getPrefix() +
"' data sources");
}
修改LOG配置文件,打印自己模塊的LOG
在系統(tǒng)的configs目錄下,已經(jīng)有了缺省的LOG4J配置文件log4j.properties。
缺省配置下包括了打印IBATIS和JDBC執(zhí)行情況
# JDBC logging configuration...
log4j.logger.com.ibatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.org.springframework.jdbc.core=DEBUG
如果想記錄自己的開發(fā)類的日志,可以簡單的增加一行
log4j.logger.com.spsoft.sample.service=DEBUG
log4j.logger.com.spsoft.sample.service.dao.SampleDao=INFO
com.spsoft.sample.service是包名,當然也可以直接指定類名。
posted on 2007-05-24 09:23
JJCEA 閱讀(1424)
評論(0) 編輯 收藏 所屬分類:
java日記