关闭HtmlUnit警告

one*_*eat 57 warnings htmlunit

你知道如何关闭HtmlUnit中的警告,注释,错误吗?

Ars*_*ray 100

把它放在代码开头的某个地方; 它将关闭它的脏嘴:

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);

webClient = new WebClient(bv);
webClient.setCssEnabled(false);

webClient.setIncorrectnessListener(new IncorrectnessListener() {

    @Override
    public void notify(String arg0, Object arg1) {
        // TODO Auto-generated method stub

    }
});
webClient.setCssErrorHandler(new ErrorHandler() {

    @Override
    public void warning(CSSParseException exception) throws CSSException {
        // TODO Auto-generated method stub

    }

    @Override
    public void fatalError(CSSParseException exception) throws CSSException {
        // TODO Auto-generated method stub

    }

    @Override
    public void error(CSSParseException exception) throws CSSException {
        // TODO Auto-generated method stub

    }
});
webClient.setJavaScriptErrorListener(new JavaScriptErrorListener() {

    @Override
    public void timeoutError(HtmlPage arg0, long arg1, long arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void scriptException(HtmlPage arg0, ScriptException arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void malformedScriptURL(HtmlPage arg0, String arg1, MalformedURLException arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void loadScriptError(HtmlPage arg0, URL arg1, Exception arg2) {
        // TODO Auto-generated method stub

    }
});
webClient.setHTMLParserListener(new HTMLParserListener() {

    @Override
    public void warning(String arg0, URL arg1, int arg2, int arg3, String arg4) {
        // TODO Auto-generated method stub

    }

    @Override
    public void error(String arg0, URL arg1, int arg2, int arg3, String arg4) {
        // TODO Auto-generated method stub

    }
});

webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setThrowExceptionOnScriptError(false);
Run Code Online (Sandbox Code Playgroud)

  • 我没有必要使用所有这些.只需使用java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 为我工作. (10认同)
  • HtmlUnit提供[SilentCssErrorHandler](http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/SilentCssErrorHandler.html),因此您不必为`setCssErrorHandler(ErrorHandler)`创建一个空的匿名内部类. (5认同)
  • 值得一提的是,在某些版本中,您必须首先在webClient上调用`getOptions()`来设置此示例中的throw异常选项,如下所示:`webClient.getOptions().setThrowExceptionOnScriptError(false);` (4认同)
  • 仍然收到警告:来自 cghtmlunit.html.HtmlScript 的“脚本不是 JavaScript” (2认同)

小智 48

Arsen Zahray的答案中的代码帮助删除了几乎所有由HtmlUnit生成的日志.

但是一个编辑有助于将它们全部删除.使用:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
Run Code Online (Sandbox Code Playgroud)

代替:

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
Run Code Online (Sandbox Code Playgroud)


Mos*_*cho 35

要从最新版本的HtmlUnit中删除所有输出,您只需在静态块或主类中添加这些行:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
Run Code Online (Sandbox Code Playgroud)

其他一些答案表明,不需要覆盖任何方法.

  • 这很有效,上面的第一个答案不再有效。 (2认同)
  • 不适合我.`HtmlUnit 2.26`.我不得不更新我的`log4j.properties`:`log4j.logger.com.gargoylesoftware = error` (2认同)

小智 13

在这里,您可以获得有关如何操作HtmlUnit记录的信息.

这是我添加到我的内容log4j.properties,以便从HtmlUnit组件中禁用详细的调试消息:

# Set specific logger levels.
log4j.logger.org.mortbay.log=fatal
log4j.logger.org.apache.http=fatal
log4j.logger.org.apache.http.headers=fatal
log4j.logger.org.apache.http.wire=fatal
# For HttpClient 3, which is used by FirefoxDriver
log4j.logger.httpclient.wire=fatal
log4j.logger.org.apache.commons=fatal
log4j.logger.com.gargoylesoftware.htmlunit=fatal
log4j.logger.com.gargoylesoftware.htmlunit.WebTestCase=fatal
# Change this to TRACE when enabling the debugger.
log4j.logger.com.gargoylesoftware.htmlunit.javascript.DebugFrameImpl=fatal
Run Code Online (Sandbox Code Playgroud)


som*_*guy 12

请尝试以下代码将日志记录级别降低为关闭:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
Run Code Online (Sandbox Code Playgroud)


Adn*_*far 6

我使用下面的代码,它完美地工作:

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
Run Code Online (Sandbox Code Playgroud)