如何抑制htmlunit(Java库)警告/错误消息?

如何抑制htmlunit(Java库)警告/错误消息?,java,logging,htmlunit,java.util.logging,Java,Logging,Htmlunit,Java.util.logging,我正在使用htmlunit[它会发出一系列警告/错误: 2017年3月24日下午6:37:30 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“text/javascript”。 2017年3月24日下午6:37:31 com.gargoylesoftware.htmlunit.html.InputElementFactory CreateElements 信息:错误的输入类型:“datetime”,

我正在使用htmlunit[它会发出一系列警告/错误:

2017年3月24日下午6:37:30 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“text/javascript”。 2017年3月24日下午6:37:31 com.gargoylesoftware.htmlunit.html.InputElementFactory CreateElements 信息:错误的输入类型:“datetime”,正在创建文本输入 2017年3月24日下午6:37:31 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“应用程序/x-javascript”。 2017年3月24日下午6:37:32 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“应用程序/x-javascript”。 2017年3月24日下午6:37:34 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“text/javascript”。 2017年3月24日下午6:37:34 com.gargoylesoftware.htmlunit.javascript.StreetErrorReporter运行时错误 严重:runtimeError:message=[指定了无效或非法的选择器(选择器:'*,:x'错误:无效的选择器::x)。]sourceName=[行=[1]行源=[null]行偏移量=[0] 2017年3月24日下午6:37:35 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“text/javascript”。 2017年3月24日下午6:37:35 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“text/javascript”。 2017年3月24日下午6:37:35 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“text/javascript”。 2017年3月24日下午6:37:36 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“text/javascript”。 2017年3月24日下午6:37:43 com.gargoylesoftware.htmlunit.javascript.host.dom.Document createElement 信息:createElement:提供的字符串'iframe name=“rufuus-frame-29_u2;-1”>https://platform.twitter.com/widgets.js]line=[9]lineSource=[null]lineOffset=[0]

我查看了其他资源,并尝试通过以下方式将其关闭:

    Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
    Logger.getLogger("org.apache.http").setLevel(Level.OFF);
以及:

但是它不起作用


还可以做些什么来抑制这些警告/错误消息?

我将以下内容放在应用程序的开头,错误/警告停止:

System.getProperties().put("org.apache.commons.logging.simplelog.defaultlog", "fatal");
Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
Logger.getLogger("org.apache.http").setLevel(Level.OFF);

如果您不打算在“logging.properties”文件中将记录器设置为
OFF
,则需要在将级别设置为OFF之前进行设置

以下是根据您的代码更正的示例:

private static final Logger[] PINNED_LOGGERS;
static {
    System.setProperty("org.apache.commons.logging.simplelog.defaultlog", "fatal");
    PINNED_LOGGERS = new Logger[]{
        Logger.getLogger("com.gargoylesoftware.htmlunit"),
        Logger.getLogger("org.apache.http")
    };

    for (Logger l : PINNED_LOGGERS) {
        l.setLevel(Level.OFF);
    }
}

请确保在调用HtmlUnit之前设置了记录器。如果没有设置,请发布完整的代码谢谢,我将代码加上一行(请参阅我的答案)并且错误/警告停止出现。在将它们设置为
关闭之前,您应该这样做。否则您可能会丢失刚刚应用的设置。我不明白。我不需要保留这些日志。如果在将日志设置为
关闭之前,日志记录器没有被某些代码锁定,则日志记录器可能会被垃圾收集。I如果在htmlunit锁定它们之前发生这种情况,就像你从未将它们设置为关闭一样。是的,我看到它们再次出现。这很烦人,就像你所说的。我也不明白你给我的链接。什么是最简单的方法来保持那些日志?
private static final Logger[] PINNED_LOGGERS;
static {
    System.setProperty("org.apache.commons.logging.simplelog.defaultlog", "fatal");
    PINNED_LOGGERS = new Logger[]{
        Logger.getLogger("com.gargoylesoftware.htmlunit"),
        Logger.getLogger("org.apache.http")
    };

    for (Logger l : PINNED_LOGGERS) {
        l.setLevel(Level.OFF);
    }
}