2010-05-04 78 views
2

我很難讓Apache Commons Digester記錄任何東西。我會非常感謝任何人都可以擺脫的光。如何使用Apache Commons記錄Digester?

在我的代碼我這樣做:

Digester digester = new Digester(); 
// some Digester set up stuff 

// What on earth should go in here???? 
digester.setLogger(LogFactory.getLog("org.apache.commons.logging.Log")); 

我有一個commons-logging.properties文件在我的類路徑如下:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog 
org.apache.commons.logging.simplelog.log.org.apache.commons.digester.Digester=debug 
org.apache.commons.logging.simplelog.log.org.apache.commons.digester.Digester.sax=info 

我只是拿不出調試信息都沒有。

感謝您的幫助!

更新: 感謝您的回答bwawok - 這就是問題所在。 在docs for Digester中,他們建議您只啓用commons-logging的SimpleLog。不幸的是,Digester似乎沒有輸出任何INFO消息,只有DEBUG,並且至少在eclipse上,SimpleLog根本不輸出DEBUG消息!結果是沒有INFO消息(因爲Digester沒有發送)並且沒有DEBUG消息(因爲SimpleLog不會轉發它們!)一旦我切換到log4j,所有調試消息都會噴出!再次感謝。

回答

1

我建議你不要使用commons logging。它有一些問題,例如不能很好地與Tomcat 5.5以及更高版本搭配。

如果你正在編寫自己的應用程序(不是庫),我建議你直接編碼到Log4j。閱讀教程http://logging.apache.org/log4j/1.2/manual.html。你將不得不像這樣

log4j.rootLogger=debug, stdout, R 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

# Pattern to output the caller's file name and line number. 
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 

log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=example.log 

log4j.appender.R.MaxFileSize=100KB 
# Keep one backup file 
log4j.appender.R.MaxBackupIndex=1 

log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

一個log4j.properties文件,然後在你的應用程序,你會用

Logger logger = Logger.getLogger(MyClassName.class); 
logger.info("Doing something I want to log at info... "); 
logger.warn("Danger!"); 

相反,如果你正在編寫一個庫分發(大多數人使用公共日誌記錄在後面當天),看看sl4j。 http://www.slf4j.org/。大多數圖書館正在切換到這個,而不是常見的日誌。

相關問題