我正在使用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登录页面中显示,添加此代码应工作:
System.getProperties().put("org.apache.commons.logging.simplelog.defaultlog", "fatal");
Run Code Online (Sandbox Code Playgroud)
......但它没有效果.我还尝试在调用java时添加以下选项:
-Dorg.apache.commons.logging.simplelog.defaultlog=fatal
Run Code Online (Sandbox Code Playgroud)
......但这也没有效果.
我想我可以在执行此代码时将stderr重定向到/ dev/null,但是可用的hacky解决方案是什么?
khy*_*ylo 13
我也有这个问题..答案取决于日志记录系统公共日志记录在引擎盖下使用.(因为common-logging只是一个包装器).请参阅以下 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,因此它默认为.
要消除所有这些的随机性,您可以自己明确设置Logger.在类路径中创建一个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
Run Code Online (Sandbox Code Playgroud)
对于log4j,添加以下log4j.properties会停止来自HtmlUnit的警告.
log4j.logger.com.gargoylesoftware.htmlunit=ERROR
Run Code Online (Sandbox Code Playgroud)
jet*_* ma 11
您还可以使用:
org.apache.log4j.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(org.apache.log4j.Level.FATAL);
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.SEVERE);
Run Code Online (Sandbox Code Playgroud)