web-dev-qa-db-ja.com

HtmlUnit警告をオフにする

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

57
oneat

これをコードの先頭付近に置きます。汚れた口を閉じます。

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);
100
Arsen Zahray

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

ただし、1回の編集ですべてを削除できます。使用する:

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

の代わりに:

Java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
46
sha

最新バージョンのHtmlUnitからすべての出力を削除するには、これらの行を静的ブロックまたはメインクラスに追加するだけです。

Java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
System.setProperty("org.Apache.commons.logging.Log", "org.Apache.commons.logging.impl.NoOpLog");

他の回答が示すようにメソッドをオーバーライドする必要はありません。

35
Mosty Mostacho

ここで、 HtmlUnitのロギングの操作方法 に関する情報を取得できます。

これは、HtmlUnitコンポーネントからの詳細なデバッグメッセージを無効にするためにlog4j.propertiesに追加したものです。

# 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
13
Ivanov Artemk

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

Java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
12
some_other_guy

私は以下のコードを使用していますが、完全に機能します:

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);
6
Adnan Ghaffar

ロガーをオフにします。ただし、ログには一般的でない問題が発生する可能性があるため、これは良い解決策ではありません。

HtmlUnitが重要ではない例外や警告などを大量に生成することは知っています。

client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);
3
coding_idiot

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

log4j.logger.com.gargoylesoftware.htmlunit=fatal
3
mike

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

@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");
2
Alex Punnen

docs をご覧ください。

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

2
Ahmed Ashour

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;
}
1
Howard

これをコードに追加してみてください:

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

基本的に、これによりロガーのログはNoOpLogになり、ログ情報はどこにも書き込まれません。

1
Salman

JavaScriptのサポートが必要ない場合は、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);

したがって、他のロガーを設定する必要はありません。

0
Samuel Philipp

私にとってうまくいった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
0
vanval