Posted on 2006-07-06 17:31
負人博客 閱讀(2929)
評論(0) 編輯 收藏 所屬分類:
開源研究
???? 在我們的日常開發中,經常需要通過輸出一些信息進行程序的調試,如果到處都用system.out.println()則在項目發布之后要逐一刪除,而log4j提供了一種新的調試輸出機制以解決輸出的問題。log4j的原理是使用一個配置文件log4j.properties進行管理,在調試的時候可以把輸出級別調低,項目正式發布之后把級別調高,這樣以前的一些輸出就可以屏蔽了,不用到程序當中再進行逐一刪除。關于log4j的介紹網上很多,隨便google一下就可以順利的使用log4j了。在這里介紹一下log4j和common-logging的聯合使用,因為在很多框架當中都是結合了common-logging和log4j的應用。像spring之類的框架里面存在很多debug輸出,用common-logging可以很容易的打印輸出,以用于了解spring的運行機制!
?? 使用介紹:
?? 1.下載jar包:
?????? log4j-1.2.9.jar和commons-logging.jar
?? 2.在web目錄的classes下面添加兩個文件:commons-logging.properties和log4j.properties??????
????? log4j.properties(例子):
????????? ##LOGGERS##
???? ???? #define a logger
????????? log4j.rootLogger=INFO,console,file
????????? #log4j.rootLogger=DEBUG,console,file
????????? ##APPENDERS##
???????? #define an appender named console,which is set to be a ConsoleAppender
???????? log4j.appender.console=org.apache.log4j.ConsoleAppender
???????? #define an appender named file,which is set to be a RollingFileAppender
??? ???? log4j.appender.file=org.apache.log4j.RollingFileAppender
???????? log4j.appender.file.File=log-wst.txt
????? ?? ##LAYOUTS##
????? ?? #assign a SimpleLayout to console appender
???????? log4j.appender.console.layout=org.apache.log4j.SimpleLayout
???????? #assign a PatternLayout to file appender
???????? log4j.appender.file.layout=org.apache.log4j.PatternLayout
???????? log4j.appender.file.layout.ConversionPattern=%p - %m%n?????
????? commons-logging.properties(例子)
????????? ##
????????? org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
?? 3.應用實例:
???? package com.wes.test;
???? import org.apache.commons.logging.Log;
???? import org.apache.commons.logging.LogFactory;
??? public abstract class BaseClass{
???????? /** 用于日志輸出 */
???????? protected Log log = LogFactory.getLog(this.getClass());
??? }
??? 這樣在子類中可以直接調用log輸出即可:
?? public class?DerivedClass extends BaseClass {
???????? pulbic void test() {
?????????????//如果log4j.properties文件配置的級別<=info則可以正常輸出(info/debug)?
??????????? log.info("這是info級別的輸出");???
?????????????//如果log4j.properties文件的級別為debug則可以正常輸出(debug)?
??????????? log.debug("這是debug級別的輸出");
???????? }
?? }
?