Java HttpClient - 减少调试输出

时间:2016-10-11 14:31:53

标签: java apache-httpclient-4.x

我需要加载测试我们一直在开发的应用程序,但我们的控制台日志经常被输出垃圾邮件。从早期的经验来看,我已经了解到System.out.println( )是一项相对昂贵的操作,所以我希望将打印减少到最低限度。

打印仅在应用程序尝试Http-post时发生,但我们每秒执行100次。我们使用Apache的HttpClient 4.5.2和HttpCore 4.4.5。该应用程序在Tomcat 7上运行。

我尝试了很多不同的解决方案:删除Tomcat阀门,设置Tomcat日志记录级别,设置-Djavax.net.debug = none,但似乎没有删除它。有谁知道导致这些输出的原因,以及如何关闭它们?

调试输出如下所示:

2016-10-11 15:24:42,942 DEBUG [http-bio-8080-exec-3] Connection request: [route: {}->http://localhost:8080][total kept alive: 0; route allocated: 0 of 200; total allocated: 0 of 200]
2016-10-11 15:24:42,956 DEBUG [http-bio-8080-exec-3] Connection leased: [id: 0][route: {}->http://localhost:8080][total kept alive: 0; route allocated: 1 of 200; total allocated: 1 of 200]
2016-10-11 15:24:42,958 DEBUG [http-bio-8080-exec-3] Connecting to localhost:8080
2016-10-11 15:24:42,978 DEBUG [http-bio-8080-exec-3] CookieSpec selected: best-match
2016-10-11 15:24:42,994 DEBUG [http-bio-8080-exec-3] Auth cache not set in the context
2016-10-11 15:24:42,995 DEBUG [http-bio-8080-exec-3] Target auth state: UNCHALLENGED
2016-10-11 15:24:42,996 DEBUG [http-bio-8080-exec-3] Proxy auth state: UNCHALLENGED
2016-10-11 15:24:42,996 DEBUG [http-bio-8080-exec-3] Attempt 1 to execute request
2016-10-11 15:24:42,997 DEBUG [http-bio-8080-exec-3] Sending request: POST /XtService/account/getbalance HTTP/1.1
2016-10-11 15:24:42,997 DEBUG [http-bio-8080-exec-3] >> "POST /XtService/account/getbalance HTTP/1.1[\r][\n]"
2016-10-11 15:24:42,999 DEBUG [http-bio-8080-exec-3] >> "Content-Length: 48[\r][\n]"
2016-10-11 15:24:42,999 DEBUG [http-bio-8080-exec-3] >> "Content-Type: application/x-www-form-urlencoded; charset=UTF-8[\r][\n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "Host: localhost:8080[\r][\n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "Connection: Keep-Alive[\r][\n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "User-Agent: Apache-HttpClient/4.2 (java 1.5)[\r][\n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "[\r][\n]"
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> POST /XtService/account/getbalance HTTP/1.1
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Content-Length: 48
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Content-Type: application/x-www-form-urlencoded; charset=UTF-8
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Host: localhost:8080
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Connection: Keep-Alive
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> User-Agent: Apache-HttpClient/4.2 (java 1.5)
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> "categoryid=2"
2016-10-11 15:24:43,256 DEBUG [http-bio-8080-exec-3] << "HTTP/1.1 200 OK[\r][\n]"
2016-10-11 15:24:43,259 DEBUG [http-bio-8080-exec-3] << "Server: Apache-Coyote/1.1[\r][\n]"
2016-10-11 15:24:43,260 DEBUG [http-bio-8080-exec-3] << "Pragma: no-cache[\r][\n]"
2016-10-11 15:24:43,260 DEBUG [http-bio-8080-exec-3] << "Cache-Control: no-cache[\r][\n]"
2016-10-11 15:24:43,260 DEBUG [http-bio-8080-exec-3] << "Expires: Thu, 01 Jan 1970 00:00:00 GMT[\r][\n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "Content-Type: application/json;charset=utf-8[\r][\n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "Content-Length: 83[\r][\n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "Date: Tue, 11 Oct 2016 13:24:43 GMT[\r][\n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "[\r][\n]"
2016-10-11 15:24:43,262 DEBUG [http-bio-8080-exec-3] Receiving response: HTTP/1.1 200 OK
2016-10-11 15:24:43,262 DEBUG [http-bio-8080-exec-3] << HTTP/1.1 200 OK
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Server: Apache-Coyote/1.1
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Pragma: no-cache
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Cache-Control: no-cache
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Expires: Thu, 01 Jan 1970 00:00:00 GMT
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Content-Type: application/json;charset=utf-8
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Content-Length: 83
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Date: Tue, 11 Oct 2016 13:24:43 GMT
2016-10-11 15:24:43,265 DEBUG [http-bio-8080-exec-3] Connection can be kept alive for 10000 MILLISECONDS
2016-10-11 15:24:43,274 DEBUG [http-bio-8080-exec-3] << "{"status":1,"data":{"RESERVED":569.81}}"
2016-10-11 15:24:43,275 DEBUG [http-bio-8080-exec-3] Connection [id: 0][route: {}->http://localhost:8080] can be kept alive for 10000 MILLISECONDS
2016-10-11 15:24:43,275 DEBUG [http-bio-8080-exec-3] Connection released: [id: 0][route: {}->http://localhost:8080][total kept alive: 1; route allocated: 1 of 200; total allocated: 1 of 200]

1 个答案:

答案 0 :(得分:1)

您可以查看:http://hc.apache.org/httpcomponents-client-ga/logging.html

  

因此,HttpClient利用Commons Logging包提供的日志记录接口。 Commons Logging为各种日志包提供了一个简单的通用日志接口。通过使用Commons Logging,可以为各种不同的日志记录行为配置HttpClient。这意味着用户必须选择使用哪个日志框架。默认情况下,Commons Logging支持以下日志记录框架:
    - Log4J
    - java.util.logging
    - SimpleLog(Commons Logging内部)

您观察到的绝大多数输出​​实际上是&#34; wire&#34;记录(即实际的HTTP流量):

  

有线日志用于记录执行HTTP请求时传输到服务器和从服务器传输的所有数据。有线日志使用org.apache.http.wire日志记录类别。只应启用此日志来调试问题,因为它会产生极大量的日志数据。

简而言之:找到使用的日志记录实现(例如log4J?),查找其配置文件,并减少org.apache.http(.wire)类别