64

HtmlUnit の警告、メモ、エラーをオフにする方法を知っていますか?

4

17 に答える 17

105

これをコードの先頭あたりに置きます。それは汚れた口を閉じます:

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);
于 2011-08-26T06:33:53.540 に答える
53

Arsen Zahray の回答のコードは、 HtmlUnitによって生成されたほとんどすべてのログを削除するのに役立ちました。

しかし、1 回の編集でそれらすべてを削除できます。使用する:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 

それ以外の:

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
于 2012-07-26T15:12:33.273 に答える
13

次のコードを試して、ログレベルをオフにします。

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
于 2012-10-22T10:53:03.167 に答える
12

ここでは、 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
于 2012-10-28T17:15:50.173 に答える
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);
于 2015-02-12T18:53:20.667 に答える
3

ロガーをオフにします。ただし、ログにいくつかの珍しい問題を記録したい場合があるため、これは良い解決策ではありません。

HtmlUnit が多くの重要でない例外、警告などを生成することは知っています。次を使用してそれらのいくつかを抑制することができます。

client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);
于 2013-11-03T13:32:31.653 に答える
3

この文字列をに追加するだけlog4.propertiesです:

log4j.logger.com.gargoylesoftware.htmlunit=fatal
于 2014-06-21T21:50:16.617 に答える
2

ドキュメントをご覧ください。

テスト スイートで使用されるサンプルの log4 ファイルがあります。ここで見つけることができます。必要に応じて、すべてを無効にすることができます。

于 2010-08-31T02:04:17.620 に答える
2

HtmlUnit 2.9 ではWebClient.setCssErrorHandler(new SilentCssErrorHandler())、警告とエラーを簡単に無視できます。例えば:

@Override
protected WebClient modifyWebClient(WebClient client) {
    // currently does nothing, but may be changed in future versions
    WebClient modifiedClient = super.modifyWebClient(client);

    modifiedClient.getOptions().setThrowExceptionOnScriptError(false);
    modifiedClient.setCssErrorHandler(new SilentCssErrorHandler());

    return modifiedClient;
}
于 2015-12-22T03:57:41.867 に答える
2

これは私のために働いた:

@Test
    public void homePage() throws Exception {
        final WebClient webClient = new WebClient();   
 webClient.setThrowExceptionOnScriptError(false);
    final HtmlPage page = webClient.getPage("http://localhost:8080/web/guest/home");
于 2012-11-06T11:28:03.683 に答える
0

私にとってうまくいったオプションの 1 つは、HtmlUnit ロガーを変更して別のファイルにログを記録することです。これにより、しばらく参照する必要がある場合に備えてこれらのエラーが発生し、メイン ログが乱雑になることもありません。以下はlog4j私が行った変更ですlog4j.properties

log4j.logger.com.gargoylesoftware.htmlunit=ERROR, HTMLUNIT
log4j.additivity.com.gargoylesoftware.htmlunit=false
log4j.appender.HTMLUNIT = org.apache.log4j.RollingFileAppender
log4j.appender.HTMLUNIT.layout=org.apache.log4j.PatternLayout
log4j.appender.HTMLUNIT.layout.ConversionPattern=%m%n
log4j.appender.HTMLUNIT.File=logs/HtmlUnitLog4j.log
log4j.appender.HTMLUNIT.MaxFileSize=5MB
log4j.appender.HTMLUNIT.MaxBackupIndex=5
于 2016-12-14T22:40:58.833 に答える
0

JavaScript のサポートが必要ない場合は、無効にするのが最も簡単な方法です。

WebClient client = new WebClient(BrowserVersion.BEST_SUPPORTED);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setJavaScriptEnabled(false);
client.setCssErrorHandler(new SilentCssErrorHandler());
client.setHTMLParserListener(new HTMLParserListener() {
    @Override
    public void error(String message, URL url, String html, int line, int column, String key) {
    }

    @Override
    public void warning(String message, URL url, String html, int line, int column, String key) {
    }
});

また、例外を無効にして、失敗したステータス コード、JavaScript、CSS エラー、および HTML 解析エラーにログオンします。

JavaScript のサポートが必要な場合は、JavaScript エラーのカスタム実装を使用できます。

client.setJavaScriptErrorListener(new JavaScriptErrorListener() {
    @Override
    public void timeoutError(HtmlPage arg0, long arg1, long arg2) {
    }

    @Override
    public void scriptException(HtmlPage arg0, ScriptException arg1) {
    }

    @Override
    public void malformedScriptURL(HtmlPage arg0, String arg1, MalformedURLException arg2) {
    }

    @Override
    public void loadScriptError(HtmlPage arg0, URL arg1, Exception arg2) {
    }
});

必要ない場合は、無効にすることもできます。

client.getOptions().setCssEnabled(false);

そのため、他のロガーを構成する必要はありません。

于 2019-04-12T22:22:14.270 に答える