java logging API,禁用日志记录到标准输出

时间:2011-05-20 20:29:40

标签: java logging

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

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

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

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

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

3 个答案:

答案 0 :(得分:8)

如果您不知道java util logging的默认配置,则会出现问题。 建筑事实: 0)每个记录器的名称都是根记录器作为父记录器。 默认事实: 1)默认情况下,logger属性useParentHandlers为true 2)根记录器默认具有ConsoleHandler

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

删除控制台日志记录非常简单:

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

答案 1 :(得分:7)

Java中的标准记录器采用分层结构,默认情况下子记录器继承其父项的处理程序。尝试这样做可以禁止使用父处理程序:

l.setUseParentHandlers(false);

答案 2 :(得分:0)

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

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

mylogger.level=NONE