禁用awt/swing调试(精细)日志消息

And*_*ner 9 java logging swing awt

我正在使用java日志记录将我的应用程序的日志消息写入日志文件和其他目标.设置日志级别后FINE,我还从AWT/Swing获取(不需要的)消息,例如:

{0}, when grabbed {1}, contains {2}
Run Code Online (Sandbox Code Playgroud)

和别的.查看JDK源代码(参见此处),可以看到相应记录器的名称sun.awt.X11.grab.XWindowPeer.

我从Java日志框架中理解的是,这个日志记录处理程序应该从其父类继承其loglevel sun.awt.

我尝试了以下方法:

Logger.getLogger("sun.awt").setLevel(Level.OFF);
Run Code Online (Sandbox Code Playgroud)

但AWT/Swing调试消息仍出现在日志输出中.

编程方式禁用这些日志消息的推荐方法是什么(同时仍然允许FINE来自其他来源的消息)?

小智 5

如果您只想记录自己应用程序消息,可以禁用所有消息,然后为应用程序显式启用消息:

Logger.getRootLogger().setLevel(Level.OFF);
Logger.getLogger("package.of.your.application").setLevel(Level.ALL);
Run Code Online (Sandbox Code Playgroud)

在用于记录的属性文件(例如logging.properties)中,这将是:

.level = OFF
package.of.your.application.level = ALL
Run Code Online (Sandbox Code Playgroud)


Ste*_*han 0

尝试 Logger.getRootLogger().setLevel(Level.OFF);