如何使用Apache Commons记录Digester?

时间:2010-05-04 22:05:59

标签: java logging apache-commons-logging

我无法让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中,他们建议您只需启用公共日志SimpleLog即可。不幸的是,Digester似乎没有输出任何INFO消息,只有DEBUG,至少在eclipse上,SimpleLog根本不输出DEBUG消息!结果是没有INFO消息(因为Digester没有发送)并且没有DEBUG消息(因为SimpleLog没有转发它们!)一旦我切换到log4j,所有的调试消息都喷涌而出!再次感谢。

1 个答案:

答案 0 :(得分:2)

我建议你不要使用公共记录。它有一些问题,比如不能很好地使用Tomcat 5.5及更高版本。

如果您正在编写自己的应用程序(而不是库),我建议您直接编写Log4j代码。阅读http://logging.apache.org/log4j/1.2/manual.html的教程。你将有一个像这样的log4j.properties文件

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

然后在您的应用程序中使用

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

如果您正在编写要分发的库(大多数人在当天使用的公共日志记录),请查看sl4j。 http://www.slf4j.org/。大多数库都会切换到此而不是公共日志记录。