Log4j slf4j:调试行为不一致?
我正在使用slf4j+log4j和我的一个库 我在一个快速的应用程序中使用它,在这个应用程序中我并不真正关心配置日志。。。或者至少我觉得我不在乎 如果我没有配置log4j,我会收到标准的警告消息Log4j slf4j:调试行为不一致?,log4j,slf4j,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://loggi
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。我如何才能做到这一点?我不想尝试弄清楚log4j默认配置的逻辑,而是将其放入一个配置文件(log4j.properties),如:
至少这可以让你控制局面。不要绑定log4j,而是绑定slf4j发行版的“简单”后端。然后事情按照您的要求运行,用户无法进行修补。它将最终用户(运行java的人)置于控制之下,这通常是您想要的方式。不是设计程序的人。在这种情况下,我不想要正常的情况。我有一些“愚蠢”的用户,他们不知道&不关心如何设置log4j,只想键入
javamyclass arg0 arg1 arg2
。
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