我使用
HtmlUnit与通过Ajax与服务器交互的网页进行交互. Ajax代码启动后不久,HtmlUnit生成这两个日志消息:
WARNING: Ignoring XMLHttpRequest.setRequestHeader for Content-length: it is a restricted header Mar 3,2011 3:32:47 PM com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest jsxFunction_setRequestHeader WARNING: Ignoring XMLHttpRequest.setRequestHeader for Connection: it is a restricted header Mar 3,2011 3:32:47 PM com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest jsxGet_status
…接下来这个消息,重复六次:
SEVERE: XMLHttpRequest.status was retrieved before the response was available. Mar 3,2011 3:32:47 PM com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest jsxGet_status
我不知道如何关闭这些消息.通过代码的描绘显示,它们是通过直接调用记录器生成的,而不是通过处理程序对象来生成,我可以提供一个无事务的实现,就像我已经为CSS错误所做的那样. HtmlUnit logging page表示添加此代码应该可以工作:
System.getProperties().put("org.apache.commons.logging.simplelog.defaultlog","fatal");
-Dorg.apache.commons.logging.simplelog.defaultlog=fatal
…但也没有效果.
解决方法
我也有这个问题
答案取决于在引擎盖下使用的日志记录系统. (因为通用日志记录只是一个包装).请参阅以下内容
http://commons.apache.org/proper/commons-logging/guide.html#Configuring_The_Underlying_Logging_System
答案取决于在引擎盖下使用的日志记录系统. (因为通用日志记录只是一个包装).请参阅以下内容
http://commons.apache.org/proper/commons-logging/guide.html#Configuring_The_Underlying_Logging_System
上面提到的属性(org.apache.commons.logging.simplelog.defaultlog)只有在使用简单的记录器时才有效.如果您在JDK 1.4或更高版本上运行,则应默认使用JDK日志记录.在这种情况下,它默认使用来自JRE安装位置的lib / logging.properties.
在我的情况下,我在类路径中有Log4j,因此默认为.
为了消除所有这些的随机性,您可以自己明确地设置记录器.在类路径中创建一个commons-logging.properties文件,并传入记录器以使用例如
# JDK Logging #org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger # Log4j logging (also required log4j.jar to be in classpath) org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
对于log4j,添加以下log4j.properties将停止HtmlUnit的警告.
log4j.logger.com.gargoylesoftware.htmlunit=ERROR