【问题标题】:Unable to log anything below INFO log level using Java Logging API无法使用 Java Logging API 记录低于 INFO 日志级别的任何内容
【发布时间】:2012-04-03 02:53:55
【问题描述】:

我已经设置(记录器类构造函数)日志记录如下-

 Log() {


        loggerObj = Logger.getLogger("");

        //Create console handler and set its level and then setup its formatter 
        handler = new ConsoleHandler();
        handler.setLevel(Level.FINEST);
        formatter = new LogFormatter();
        handler.setFormatter(formatter);

        //assign handler to logger objs
        loggerObj.setUseParentHandlers(false);
        loggerObj.addHandler(handler);

    }

Log 类的成员是-

    static Logger loggerObj;
    ConsoleHandler handler;
    LogFormatter formatter;

即使我已将级别设置为 FINEST 并将 setUseParentHandlers 设置为 false,但为什么我无法记录低于 INFO 的任何内容?

编辑-根据评论-在我修改了全局 logging.properties 文件并将级别设置为 ALL 之后,它起作用了。所以我想我的问题是为什么 setUseParentHandlers 不起作用?

【问题讨论】:

  • 看看this answer能不能帮你解决。
  • 在我修改了全局 logging.properties 文件并将级别设置为 ALL 之后,它工作了。所以我认为我的问题是为什么 setUseParentHandlers 不起作用?
  • Err... setUseParentHandlers 指定是否在树上递归地发送数据。除非您明确不希望将日志消息传播到作为此消息的父级的记录器,否则该命令不应与您的记录器在单个日志级别规范的上下文中的行为方式有任何关系。也许我不明白你在这里问什么?
  • 该死! setUseParentHandlers 太直观了,我认为它会设置是否使用父处理程序。 @MrGomez 请将此作为答案发布,我会接受
  • @user837208 完成。很高兴为您提供帮助!

标签: java logging java.util.logging


【解决方案1】:

所以我认为我的问题是为什么 setUseParentHandlers 不起作用?

没有证据表明setUseParentHandlers 不起作用。

相反,似乎正在发生的事情是您的 Logger 正在(曾经)使用默认级别 INFO 创建。尝试通过调用Logger.setLevel(FINEST) 手动设置它。

【讨论】:

  • 没错! Logger 和 Handler 都需要有足够低的级别集。
【解决方案2】:

正如勘误表中提到的,setUseParentHandlers 指定是否将数据递归地发送到日志树上。除非您明确不希望日志消息传播到作为此消息的父级的记录器,否则该命令不应与它们在单个调用的上下文中的行为方式有任何关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多