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

Kis*_*aki 22 java logging slf4j java.util.logging

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

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

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

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

Nee*_*aks 23

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

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

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

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

这与配置SLF4J无关; 事实上,SLF4J没有任何配置,一切配置简单地交换JAR文件.


供你参考:


小智 9

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

在那里,你可以看到,simpleLogger使用INFO默认的日志级别.您可以使用系统属性更改它.这对于非生产环境非常有用:

static {

    System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace");
}
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以添加-Dorg.slf4j.simpleLogger.defaultLogLevel=debug到 VM 选项。


Jib*_*bby 5

我只是将我的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
Run Code Online (Sandbox Code Playgroud)

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

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

是 slf4j 手册