slf4j:调试行为不一致?

时间:2011-04-25 18:04:14

标签: log4j slf4j

我正在使用slf4j + log4j和我的库。

我在一个快速的应用程序中使用它,我真的不关心配置日志记录......或者至少我不认为我在乎。

如果我没有配置log4j,我会收到标准警告消息

log4j:WARN No appenders could be found for logger com.xyz.abcdbabble
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

哪个好。 如果我那么

logger.debug("Blah blah blah")

然后记录器不打印任何内容。太好了!

但如果我这样做

if (logger.isDebugEnabled())
{
    System.out.println("print some complex stuff:");
    print_some_complex_stuff();
}

然后括号中的东西被执行。是什么给了什么?

我正在寻找一种方法来确定是否打印出应该具有等效启用logger.debug()的内容,即使在最终应用程序中未配置log4j也是如此。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我没有试图弄清楚log4j默认配置的逻辑,而是放入一个配置文件(log4j.properties),如:

log4j.rootLogger=debug, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

至少这会让你掌控一切。

答案 1 :(得分:0)

不是捆绑log4j,而是捆绑来自slf4j发行版的“简单”后端。然后事情就像你想要的那样工作,并且用户不能修补。