closuresHtmlUnit警告
你知道我怎么能把closuresHtmlUnit的警告,注意,错误?
把它放在你的代码开始的地方,它会closures它的脏话:
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);
Arsen ..非常感谢答案..使用你的代码有助于通过HtmlUnit去除几乎所有的日志。 但是一个编辑有助于将其全部删除:
使用:
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
代替
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
要从最新版本的HtmlUnit中删除所有输出,只需要在静态块或主类中添加这些行:
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
不需要重写任何方法,因为一些其他的答案状态。
在这里你可以得到如何操作HtmlUnit日志的信息 。
这是我添加到我的log4j.properties为了禁用来自HtmlUnit组件的详细debugging消息:
# 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
尝试这个:
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
我使用下面的代码,它是完美的。
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);
只要添加到你的log4.properties这个stringlog4j.logger.com.gargoylesoftware.htmlunit = fatal
看看文档 。
有一个testing套件使用的示例log4文件,你可以在这里find它,如果你愿意,你可以禁用所有的东西。
这对我有效
@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");
尝试添加到您的代码:LogFactory.getFactory()。setAttribute(“org.apache.commons.logging.Log”,“org.apache.commons.logging.impl.NoOpLog”);
基本上,logging器日志到NoOpLog不会写日志错误或文件或任何地方:)
closureslogging器。 但这不是一个好的解决scheme,因为你可能想在日志中有一些不常见的问题。
我知道Htmlunit,产生了很多不重要的例外,警告等。
你可以使用下面的方法抑制其中的一些:
client.getOptions().setThrowExceptionOnFailingStatusCode(false); client.getOptions().setThrowExceptionOnScriptError(false); client.getOptions().setPrintContentOnFailingStatusCode(false);
现在在htmlunit 2.9中,WebClient.setCssErrorHandler(新的SilentCssErrorHandler())可以方便地忽略警告和错误。
@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; }
一个选项对我来说很好,就是把htmlunitlogging器改成login到不同的文件,这样我就有了这些错误,以防我需要引用它,而且也不会把我的主要日志混乱。 以下是我对log4j.properties所做的log4j更改:
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