66 votes

Désactiver les avertissements de HtmlUnit

Savez-vous comment désactiver les avertissements, les notes et les erreurs dans HtmlUnit ?

106voto

Arsen Zahray Points 4000

Placez ceci quelque part au début de votre code ; il fermera sa sale gueule :

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);

9 votes

HtmlUnit fournit SilentCssErrorHandler afin que vous n'ayez pas à créer une classe interne anonyme vide pour setCssErrorHandler(ErrorHandler) .

13 votes

Je n'ai pas eu à les utiliser tous. J'ai simplement utilisé java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF) ; cela a fonctionné pour moi.

4 votes

Il est utile de mentionner que sur certaines versions, vous devez appeler getOptions() sur le webClient d'abord pour définir les options de lancement d'exception dans cet exemple, comme ceci : webClient.getOptions().setThrowExceptionOnScriptError(false)‌​;

53voto

user1140453 Points 161

Le code dans La réponse d'Arsen Zahray a permis de supprimer presque tous les journaux générés par HtmlUnit.

Mais un seul montage permet de les supprimer tous. Utilisez :

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

au lieu de :

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

1 votes

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

41voto

Mosty Mostacho Points 22803

Pour supprimer tous les résultats de la dernière version de HtmlUnit, il suffit d'ajouter ces lignes dans un bloc statique ou dans votre classe principale :

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

Il n'est PAS nécessaire de surcharger une méthode comme le disent certaines autres réponses.

2 votes

Cela fonctionne parfaitement, la première réponse ci-dessus ne fonctionne plus.

3 votes

Ça n'a pas marché pour moi. HtmlUnit 2.26 . J'ai dû mettre à jour mon log4j.properties avec : log4j.logger.com.gargoylesoftware=error

14voto

Some_other_guy Points 1697

Essayez le code suivant pour désactiver le niveau de journalisation :

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

12voto

Ivanov Artemk Points 51

Vous y trouverez des informations sur comment manipuler la journalisation de HtmlUnit .

C'est ce que j'ai ajouté à mon log4j.properties afin de désactiver les messages de débogage verbeux des composants 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

0 votes

Cela a fonctionné pour moi, et ne désactive pas complètement la journalisation, ce qui est utile pour moi puisque je veux voir les erreurs fatales.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X