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