slf4j使用jdk进行日志记录 – 如何启用调试?

默认情况下,slf4j与jdk( slf4j-jdk14-1.6.1.jar )一起使用时,不会记录调试消息。 我该如何启用它们?

我无法在官方文档,网络或此处找到有关如何启用它的信息。

我发现了一些信息(虽然失败了)在%JDK_HOME%/ lib中创建文件并在配置文件中定义了那里的级别。 但是,我想在编译/运行时定义级别,以便我可以从具有不同日志记录级别的IDE运行和调试我的应用程序。

是不是我可以设置一些环境变量,或VM arg?

为什么你认为它不记录DEBUG消息?

如果你的意思是你的log.debug(String)日志记录调用没有在java.util.logging日志文件中结束,那么我想你必须配置logging.properties配置文件以允许FINE级别的日志消息。

如果你不想搞乱全局%JRE_HOME%/lib/logging.properties ,那么你可以在命令行-Djava.util.logging.config.file=logging.properties-Djava.util.logging.config.file=logging.properties – 这将强制记录系统在当前目录中查找该配置文件。

或者使用其他(编程)方式配置java.util.logging ,请参阅下面的教程。

这与配置SLF4J无关; 事实上,SLF4J没有任何配置,只需交换JAR文件即可配置所有内容。


供你参考:

  • JDK14LoggerAdapter
  • Java Logging API教程

如果您正在使用slf4j SimpleLogger实现,请阅读此内容 。

在那里你可以看到simpleLogger使用INFO作为默认日志级别。 您可以使用系统属性更改它。 这对非生产环境很有用:

 static { System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace"); } 

我只是将我的logging.properties文件放在我的应用程序WEB-INF / classes文件中(或者使用Neeme Praks识别的命令行参数,如果你没有在战争中部署),并在eclipse中打开属性文件,这样我就可以了微调它以记录包和我感兴趣的级别。

在logging.properties文件中,您需要确保将记录器级别和处理程序级别都设置为所需级别。 例如,如果您希望输出转到控制台,则至少需要具有以下内容:

 #logging.properties file contents #Define handlers handlers=java.util.logging.ConsoleHandler #Set handler log level java.util.logging.ConsoleHandler.level=FINE #Define your logger level com.company.application.package.package.level=FINE #Assign your handler to your logger com.company.application.package.package.handlers=java.util.logging.ConsoleHandler 

你提到了slf4j-jdk14-1.6.1.jar 。 这提供了slf4j与java.util.logging的绑定。 你需要在类路径中拥有它,但也要确保你的类路径中也有slf4j api( slf4j-api-1.7.12.jar )。

我发现此链接中的示例logging.properties文件对于创建各种记录器和处理程序非常有用,可以对进入控制台的日志进行细粒度控制,以及将哪些日志转到文件中:

这是slf4j手册 。