默认情况下,slf4j与jdk( slf4j-jdk14-1.6.1.jar )一起使用时,不会记录调试消息。 我该如何启用它们?
我无法在官方文档,网络或此处找到有关如何启用它的信息。
我在%JDK_HOME%/ lib中创建了一个文件并在配置文件中定义了那里的级别。 但是,我想在编译/运行时定义级别,以便我可以从具有不同日志记录级别的IDE运行和调试我的应用程序。
我可以设置一些环境变量,还是VM arg?
答案 0 :(得分:23)
为什么你认为它不记录DEBUG消息?
如果您的意思是log.debug(String)
日志记录调用未在java.util.logging
日志文件中结束,那么我猜您必须配置logging.properties
配置文件以允许FINE
日志消息1}}级别。
如果您不想弄乱全局%JRE_HOME%/lib/logging.properties
,那么您可以在命令行上传入-Djava.util.logging.config.file=logging.properties
- 这将强制日志记录系统在当前查找该配置文件。目录
或使用其他(编程)方式配置java.util.logging
,请参阅下面的教程。
这与配置SLF4J无关;事实上,SLF4J没有任何配置,只需交换JAR文件就可以配置。
供您参考:
答案 1 :(得分:4)
我只是将logging.properties文件放在我的应用程序WEB-INF / classes文件中(或者如果你没有在战争中部署,则使用Neeme Praks识别的命令行参数),并在eclipse中打开属性文件所以我可以微调它以记录包和我感兴趣的级别。
在logging.properties文件中,您需要确保将记录器级别和处理程序级别都设置为所需级别。例如,如果您希望输出转到控制台,则至少需要具有以下内容:
$(deriveFromJSON defaultOptions {
fieldLabelModifier = let f "foo" = "Foo"
f other = other
in f
} ''Person)
你提到了#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绑定到java.util.logging。你需要在类路径中拥有它,但也要确保你的类路径中也有slf4j api(slf4j-jdk14-1.6.1.jar
)。
我发现the example logging.properties file in this link对于创建各种记录器和处理程序非常有用,可以让您对控制台上的日志以及记录到文件的日志进行细粒度控制:。
答案 2 :(得分:4)
您可以将-Dorg.slf4j.simpleLogger.defaultLogLevel=debug
添加到VM选项。
答案 3 :(得分:0)
如果您使用的是lombok Slf4j
package com.space.slf4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author anson
* @date 2019/6/18 16:17
*/
@Slf4j
@RestController
public class TestController {
@RequestMapping("/log")
public String testLog(){
log.info("######### info #########");
log.debug("######### debug #########");
log.error("######### error #########");
return null;
}
}
application.yml
logging:
level:
root: debug