Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Log4j slf4j:调试行为不一致?_Log4j_Slf4j - Fatal编程技术网

Log4j slf4j:调试行为不一致?

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

我正在使用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。我如何才能做到这一点?

我不想尝试弄清楚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