无法关闭HtmlUnit日志消息

我使用 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");

…但没有效果.我还尝试添加以下选项,我调用java:

-Dorg.apache.commons.logging.simplelog.defaultlog=fatal

…但也没有效果.

我想我可以在这代码执行时将stderr重定向到/ dev / null,但是可以使用更少的hacky解决方案?

解决方法

我也有这个问题
答案取决于在引擎盖下使用的日志记录系统. (因为通用日志记录只是一个包装).请参阅以下内容
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安装位置的l​​ib / 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

相关文章

Mip是什么意思以及作用有哪些
怎么测试Mip页面运行情况
MIP安装的具体步骤有哪些
HTML添加超链接、锚点的方法及作用详解(附视频)
MIP的规则有哪些
Mip轮播图组件中的重要属性讲解