我无法让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,所有的调试消息都喷涌而出!再次感谢。
答案 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/。大多数库都会切换到此而不是公共日志记录。