禁用 HttpClient 日志记录

新手上路,请多包涵

我在集成测试套件中使用 commons-httpclient 3.1。 HttpClient 的默认日志记录非常嘈杂,我似乎无法将其关闭。我已经尝试按照 此处 的说明进行操作,但它们都没有任何区别。

大多数情况下,我只需要关闭 org.apache.http.wire 记录器。部分问题是我不知道尝试使用哪种类型的记录器 HttpClient 。我以前从未使用过这个库。我尝试创建一个 log4j.properties 文件并将其放入我的测试/资源文件夹,修改 jre/lib 中的主 logging.properties 文件,并将各种日志记录选项发送到 日志页面 上指定的 Maven,他们都没有任何区别。

更新: 更正:看起来有问题的输出实际上是通过 jwebunit 对 HttpClient 的使用产生的,而不是我自己的。无论哪种方式,都不可取。

更新: 感谢您到目前为止的尝试。我已经尝试了下面建议的所有内容,但仍然没有运气。我的 src/test/resources 文件夹中有一个文件 commons-logging.properties 包含以下内容

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties

和具有以下内容的同一文件夹中的文件 log4j.properties

 log4j.rootLogger=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n

#This is the line that should make httpclient shut up
log4j.logger.org.apache.http=ERROR

然而,当我运行我的测试时,我仍然得到一堆这样的输出:

 21:57:41.413 [main] DEBUG org.apache.http.wire - << "                                   [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "                                   [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "                               </ul>[\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "    [\n]"
21:57:41.424 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "                   </div>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "                </li>[\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "            [\r][\n]"
21:57:41.425 [main] DEBUG org.apache.http.wire - << "            [\r][\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "        </ul>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.433 [main] DEBUG org.apache.http.wire - << "<div class="details">[\n]"
21:57:41.442 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-body details-precis  ">[\n]
"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "<div class="details-state">[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.443 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "</div>[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\n]"
21:57:41.455 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
Destroying 1 processes21:57:41.465 [main] DEBUG org.apache.http.wire - << "[\r][\n]"

通过网络传输的所有内容的输出使该库对我来说无法使用……直到我弄清楚如何将其关闭。要读入此日志配置,我需要做什么特别的事情吗?

原文由 Matt Baker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
1 个回答

更新 log4j.properties 以包括:

 log4j.logger.httpclient.wire.header=WARN
log4j.logger.httpclient.wire.content=WARN


请注意,如果未安装 Log4j 库,则 HttpClient(以及 JWebUnit)将使用 logback。在这种情况下,创建或编辑 logback.xml 以包括:

 <configuration>
    <logger name="org.apache" level="WARN" />
    <logger name="httpclient" level="WARN" />
</configuration>


将日志级别设置为 WARN Log4j 使用包名称 org.apache.commons.httpclientlog4j.properties 将无法按预期工作

 log4j.logger.org.apache.commons.httpclient=WARN

这是因为 HttpClient (v3.1) 的源代码使用了以下日志名称:

 public static Wire HEADER_WIRE = new Wire(LogFactory.getLog("httpclient.wire.header"));
public static Wire CONTENT_WIRE = new Wire(LogFactory.getLog("httpclient.wire.content"));

原文由 Sud Monkey 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题