【问题标题】:FINE and below messages not appearing when using ConsoleHandler logging使用 ConsoleHandler 日志记录时未出现 FINE 及以下消息
【发布时间】:2021-11-27 21:33:30
【问题描述】:

尽管查阅了this question 的答案,但我的 Logger 永远不会显示级别为 FINE 及以下的消息。

Logger root = Logger.getLogger("");
root.setLevel(Level.FINEST); // I have also tried Level.ALL
    
// Test messages
root.severe("Severe");
root.warning("Warning");
root.info("Info");
root.fine("Fine");
root.finer("Finer");
root.finest("Finest");

代码产生以下输出。

Nov 27, 2021 4:28:45 PM java.util.logging.LogManager$RootLogger log
SEVERE: Severe
Nov 27, 2021 4:28:45 PM java.util.logging.LogManager$RootLogger log
WARNING: Warning
Nov 27, 2021 4:28:45 PM java.util.logging.LogManager$RootLogger log
INFO: Info

我已尝试更新 logging.properties 文件以将ConsoleHandler 的级别设置为ALLFINEST,但这不会改变我的结果。如何实际更改记录器的级别?

我的logging.properties

handlers= java.util.logging.ConsoleHandler
.level= ALL

java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

【问题讨论】:

  • 请同时提供您的日志记录配置 - logging.properties 文件的内容或在代码中完成的配置。很可能您没有为ConsoleHandler 设置正确的日志记录级别。默认情况下,它在 JDK 提供的logging.properties 文件中设置为java.util.logging.ConsoleHandler.level = INFO。查看您提到的如何执行此操作的 SO 答案中的 Editing the handler Level 部分。
  • logging.properties 位于何处?您确定它与您运行程序时使用的 JRE 或 JDK 相同吗?

标签: java logging java.util.logging


【解决方案1】:

使用test program to print the logger tree 并发布控制台输出。这将证明您的静态配置文件是否真的在运行时被使用。

对于根记录器来说应该不是问题,但您应该将记录器声明为静态最终记录器,这样它就不会被垃圾收集并且您会丢失所有程序更改。

【讨论】:

    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 2015-05-21
    • 1970-01-01
    • 2016-02-20
    • 2016-02-19
    相关资源
    最近更新 更多