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

时间:2010-11-25 15:07:13

标签: java logging slf4j java.util.logging

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

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

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

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

4 个答案:

答案 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对于创建各种记录器和处理程序非常有用,可以让您对控制台上的日志以及记录到文件的日志进行细粒度控制:。

here's the slf4j manual

答案 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