Désactivation des avertissements d’HtmlUnit

Savez-vous comment activer les avertissements, les notes, les erreurs dans HtmlUnit?

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

    LogFactory.getFactory().setAtsortingbute("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(Ssortingng 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, Ssortingng 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(Ssortingng arg0, URL arg1, int arg2, int arg3, Ssortingng arg4) { // TODO Auto-generated method stub } @Override public void error(Ssortingng arg0, URL arg1, int arg2, int arg3, Ssortingng arg4) { // TODO Auto-generated method stub } }); webClient.setThrowExceptionOnFailingStatusCode(false); webClient.setThrowExceptionOnScriptError(false); 

    Arsen .. merci beaucoup pour la réponse .. Utiliser votre code a aidé à supprimer presque tous les journaux par HtmlUnit. Mais une édition permet de les supprimer toutes:

    Utilisation:

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

    au lieu de

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

    Pour supprimer toutes les sorties de la dernière version de HtmlUnit, il vous suffit d’append 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 remplacer une méthode car d’autres réponses s’affichent.

    Ici, vous pouvez obtenir des informations sur la manipulation de la journalisation de HtmlUnit .

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

    essaye ça:

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

    J’utilise le code ci-dessous et le préfet.

      LogFactory.getFactory().setAtsortingbute("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); 

    Ajoutez simplement à votre log4.properties cette chaîne log4j.logger.com.gargoylesoftware.htmlunit = fatal

    Regardez les documents .

    Il y a un exemple de fichier log4 utilisé par la suite de tests, vous pouvez le trouver ici , vous pouvez tout désactiver si vous le souhaitez.

    Cela a fonctionné pour moi

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

    Éteignez les enregistreurs. Mais ce n’est pas une bonne solution, car vous pourriez avoir des problèmes inhabituels dans les journaux.

    Je sais que Htmlunit produit beaucoup d’exceptions, d’avertissements, etc.

    Vous pouvez supprimer quelques-uns de ceux qui utilisent:

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

    Essayez d’append ceci à votre code: LogFactory.getFactory (). SetAtsortingbute (“org.apache.commons.logging.Log”, “org.apache.commons.logging.impl.NoOpLog”);

    Fondamentalement, logger se connecte à NoOpLog qui n’écrit pas de journal pour errer ou fichier ou n’importe où 🙂

    maintenant, dans htmlunit 2.9, WebClient.setCssErrorHandler (new SilentCssErrorHandler ()) peut facilement ignorer les avertissements et les erreurs.

     @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; } 

    Une option qui a bien fonctionné pour moi est de changer le logger htmlunit pour qu’il se connecte à un fichier différent, juste pour avoir ces erreurs au cas où je devrais le renvoyer quelque temps et qu’il n’encombrerait pas non plus mes journaux principaux. Voici la modification log4j que j’ai apscope à 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