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

Ago*_*noX 9 java logging

在构造之后使用标准的java logging API(import java.util.logging.Logger):

Logger l = Logger.getLogger("mylogger");
Run Code Online (Sandbox Code Playgroud)

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

l.severe("test with no handler");
Run Code Online (Sandbox Code Playgroud)

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

Ago*_*noX 8

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

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

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

Logger l0 = Logger.getLogger("");
l0.removeHandler(l0.getHandlers()[0]);
Run Code Online (Sandbox Code Playgroud)


Mic*_*hal 8

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

l.setUseParentHandlers(false);
Run Code Online (Sandbox Code Playgroud)