warnings htmlunit

warnings - Desactivando las advertencias de HtmlUnit



(13)

¿Sabes cómo puedo desactivar Advertencias, Notas, Errores en HtmlUnit?


Apaga los registradores. Pero esa no es una buena solución, ya que es posible que desee tener algunos problemas poco comunes en los registros.

Conozco Htmlunit, produce muchas excepciones, advertencias, etc. sin importancia.

Puede suprimir algunos de los que usan:

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


Aquí puede obtener información sobre cómo manipular el registro de HtmlUnit .

Esto es lo que agregué a mi log4j.properties para deshabilitar los mensajes de depuración verbosa de los componentes 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


Arsen ... muchas gracias por la respuesta. Usar tu código ayudó a eliminar casi todos los registros de HtmlUnit. Pero una edición ayuda a eliminarlos a todos:

Utilizar:

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

en lugar de

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


Coloque esto en algún lugar alrededor del comienzo de su código, cerrará su boca sucia:

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


Eche un vistazo a los docs .

Hay un archivo log4 de ejemplo utilizado por el conjunto de pruebas, puede encontrarlo here , puede deshabilitarlo todo si lo desea.


Esto funcionó para mí

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


Estoy usando el código a continuación y es perfecto.

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


Intente agregar esto a su código: LogFactory.getFactory (). SetAttribute ("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

Básicamente, el registrador registra a NoOpLog que no escribe el registro para errar o archivar o en cualquier lugar :)


Para eliminar todos los resultados de la última versión de HtmlUnit, solo tiene que agregar estas líneas en un bloque estático o en su clase principal:

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

NO es necesario para anular ningún método como lo indican otras respuestas.


Simplemente agregue a su log4.properties esta cadena log4j.logger.com.gargoylesoftware.htmlunit = fatal


Una opción que funcionó bien para mí es cambiar el registrador htmlunit para que se registre en un archivo diferente solo para que tenga esos errores en caso de que necesite referirlo alguna vez y tampoco altere mis registros principales. A continuación se muestra el cambio de log4j que realicé en 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


ahora en htmlunit 2.9, WebClient.setCssErrorHandler (nuevo SilentCssErrorHandler ()) puede ignorar convenientemente las advertencias y errores.

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


prueba esto:

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