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手册 。