当前位置: 首页 > 知识库问答 >
问题:

调试日志记录在特定处理程序上不起作用

袁高明
2023-03-14

我正在使用JDK14Logger实现apache共享日志框架。调试日志不会出现,只有当我将根记录器设置为FINE时才会出现。我的理解是,设置为特定处理程序的日志级别应该覆盖根记录器的日志级别。然而,这并没有发生。

# The following creates the console handler
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler

# Set the default logging level for the root logger
.level=FINE

# Set the default logging level
java.util.logging.ConsoleHandler.level=FINE
java.util.logging.FileHandler.level=FINEST

# log level for the "com.rst.example" package


# Set the default formatter
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

# Specify the location and name of the log file
java.util.logging.FileHandler.pattern=D:/test.log

测试等级:

public class Test {
private  Log logger = LogFactory.getLog(Test.class.getName());

 static  {
    System.getProperties().setProperty("java.util.logging.config.file","log-config.properties");
}

public static void main(String[] args) {
    //-Djava.util.logging.config.file=src/main/resources/log-config.properties

    Test test =  new Test();

    test.logger.info("info from main");
    test.logger.error("error from main");
    test.logger.fatal("fatal from main");
    System.out.println("is dubug enabled? :" + test.logger.isDebugEnabled());
    test.logger.debug("debug from main");

}

}

共有1个答案

唐声
2023-03-14

默认情况下,所有JDK记录器都会将日志记录发布到根记录器的处理程序。ConsoleHandler的默认级别为INFO。

我的理解是,设置为特定处理程序的日志级别应该覆盖根记录器的日志级别。然而,这并没有发生。

它没有,也不是。使用DebugLogging根据JDK日志测试配置文件。

调试日志不会出现,只有在我将根记录器设置为“精细”时才会出现。

输出被发布到处理程序。不出现表示未附加处理程序、未将级别设置为预期级别,或者处理程序已附加到不在发布路径上的子记录器。

修改链接答案中的DebugLogging类,以包含您的配置和执行日志记录的apache commons代码。不要删除JDK日志代码。该代码的输出将引导您找到问题所在。

 类似资料:
  • 我试图在一个基于spring的项目中创建记录器策略。 我面临的问题与滚动政策有关。已创建logfile.log并且工作正常,但未创建滚动文件rollingfile.log.%d{yyyy-MM-dd}.log。

  • 我试图使用“使用父母处理程序”来防止日志(由类/类别定义)在多个文件中传播。也就是说,在几个不同的文件中显示相同的消息。例: 但是,有些消息会同时出现在这两者中。“a.b.c.d”消息出现在“a.b”中

  • mySampleApplicaton.gwt.xml mySampleApplication.java(入口点)

  • 通过设置日志记录,我无法让Camel DSL在Spring Boot下将调试日志打印到控制台。级别设置为应用程序中的包名称。属性: logging.level.org.test.logdemo调试 如果我将LoggingLevel设置为INFO或WARN,则日志会打印: ^信息和警告打印,调试不打印。 如果我为路由指定一个名称,并在application.properties文件中引用它,则打印D

  • 一般来说,你应该在运行时增加调试选项来调试问题;也可以把调试选项添加到 Ceph 配置文件里来调试启动问题,然后查看 /var/log/ceph (默认位置)下的日志文件。 Tip 调试输出会拖慢系统,这种延时有可能掩盖竞争条件。 日志记录是资源密集任务。如果你碰到的问题在集群的某个特定区域,只启用那个区域对应的日志功能即可。例如,你的 OSD 运行良好、元数据服务器却不行,这时应该先打开那个可疑

  • 互联网上有许多帖子建议如何从logback迁移到log4j2进行Spring引导日志记录。 参考这个sof post-Spring Boot日志与log4j2-我已经配置我的项目使用log4j2。然后我添加了一些基本的log4j2.xml和log4j2.properties文件来测试。 但是在这些更改之后,我的项目无法进行任何日志记录。有人能帮我找出毛病吗? 项目代码可在github-https: