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

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

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

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

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

它将(一些,而不是全部)日志消息写入输出。 如何禁用此function? 在此感谢Agostino

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

所以。 默认情况下,新记录器还将其日志记录发送到其父记录(点1),即根记录器(点0),默认情况下将其记录到控制台(点2)。

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

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

Java中的标准记录器采用分层结构,默认情况下子记录器inheritance其父项的处理程序。 尝试此操作以禁止使用父处理程序:

 l.setUseParentHandlers(false); 

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

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

 mylogger.level=NONE