【问题标题】:java logging API, disable logging to standard outputjava logging API,禁用记录到标准输出
【发布时间】:2011-05-20 20:29:40
【问题描述】:

使用标准的java logging API(import java.util.logging.Logger),构建后:

Logger l = Logger.getLogger("mylogger");

我已经能够记录一些东西了。由于它没有 FileHandler,它不会向磁盘写入任何内容。

l.severe("test with no handler");

它写入(部分,不是全部)日志消息以输出。 如何禁用此功能? 提前致谢 阿戈斯蒂诺

【问题讨论】:

  • l.setLevel(Level.OFF);

标签: java logging


【解决方案1】:

如果您不知道 java util logging 的默认配置,就会出现问题。 建筑事实: 0)每个记录器,无论其名称是什么,都将根记录器作为父记录器。 默认事实: 1)logger属性useParentHandlers默认为true 2) root logger 默认有一个 ConsoleHandler

所以。一个新的记录器,默认情况下也将其日志记录发送到他的父级(点 1),即根记录器(点 0),默认情况下,将它们记录到控制台(点 2)。

删除控制台日志很简单:

Logger l0 = Logger.getLogger("");
l0.removeHandler(l0.getHandlers()[0]);

【讨论】:

    【解决方案2】:

    Java 中的标准 Logger 采用分层结构,子 Logger 默认继承其父级的 Handler。试试这个来禁止使用父处理程序:

    l.setUseParentHandlers(false);
    

    【讨论】:

    • 请解释为什么您的答案会起作用,而不仅仅是给出答案。
    • 我得到`错误: 预期`
    【解决方案3】:

    禁用此功能您的意思是您根本不想记录任何内容?如果是这种情况,您必须将该记录器的级别设置为 NONE

    例如,如果您使用的是日志记录属性文件,您可以设置:

    mylogger.level=NONE
    

    【讨论】:

    • 我猜 OP 想要禁用登录到他们的标准输出。
    • 是的,我想禁用标准输出日志;我只想记录以显式设置处理程序。
    猜你喜欢
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 2013-01-13
    • 2018-10-10
    • 1970-01-01
    相关资源
    最近更新 更多