Отключение предупреждений HtmlUnit - PullRequest
57 голосов
/ 30 августа 2010

Знаете ли вы, как отключить предупреждения, заметки, ошибки в HtmlUnit?

Ответы [ 14 ]

99 голосов
/ 26 августа 2011

Поместите это где-нибудь в начале вашего кода; он закроет свой грязный рот:

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);
45 голосов
/ 26 июля 2012

Код Ответ Арсена Захрея помог удалить почти все журналы, созданные HtmlUnit.

Но одна правка помогает удалить их всех. Использование:

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

вместо:

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
35 голосов
/ 02 сентября 2013

Чтобы удалить все выходные данные из последней версии HtmlUnit, вам просто нужно добавить эти строки в статический блок или в ваш основной класс:

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

Нет необходимости переопределять какой-либо метод, поскольку некоторые другие состояния ответа.

13 голосов
/ 28 октября 2012

Здесь вы можете получить информацию о , как манипулировать журналированием 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
12 голосов
/ 22 октября 2012

Попробуйте следующий код, чтобы выключить уровень ведения журнала:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
6 голосов
/ 12 февраля 2015

Я использую код ниже, и он отлично работает:

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);
3 голосов
/ 22 июня 2014

Просто добавьте эту строку в ваш log4.properties:

log4j.logger.com.gargoylesoftware.htmlunit=fatal
3 голосов
/ 03 ноября 2013

Выключите регистраторы. Но это не очень хорошее решение, так как вы можете захотеть столкнуться с некоторыми необычными проблемами в журналах.

Я знаю, что HtmlUnit создает много неважных исключений, предупреждений и т. Д. Вы можете подавить несколько из тех, кто использует:

client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);
2 голосов
/ 06 ноября 2012

Это сработало для меня:

@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 голосов
/ 31 августа 2010

Взгляните на документы .

Существует пример файла log4, используемого набором тестов, вы можете найти его здесь , вы можете отключить всеесли хочешь.

...