动态配置Apache Http客户端

时间:2013-10-24 04:49:39

标签: java apache-httpclient-4.x apache-commons-httpclient

我正在创建一个使用http://hc.apache.org/httpcomponents-client-4.2.x/index.html向外部服务发出HTTP请求的模块。该模块将由应用程序使用。应用程序通过基于XML的配置文件配置模块的不同方面。我想指定用于该XML文件中的http通信的日志记录级别。该模块将读取该配置文件,并使用该日志记录级别配置apache HTTP客户端。我无法找到任何方式如何以编程方式配置apache http库以及应用程序所需的正确日志记录级别。有什么办法吗?

1 个答案:

答案 0 :(得分:1)

httpclient使用公共日志记录,如下所述:http://hc.apache.org/httpcomponents-client-4.2.x/logging.html

因此它将日志记录委派给您的日志记录框架。要配置http请求的日志记录,您需要使用日志记录框架的API。 例如,如果使用JDK日志记录,这样的事情应该起作用:

java.util.logging.Logger.getLogger("org.apache.http.wire").setLevel(Level.ALL)

每个日志记录框架都有自己的API。

要使用与commons-logging打包在一起的内置SimpleLog实现,您可以执行以下操作:

    System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.SimpleLog"); 
    System.setProperty("org.apache.commons.logging.simplelog.defaultlog","trace"); 

    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet("http://www.google.com");
    client.execute(request);

运行此代码应该将大量日志输出打印到控制台(syserr)。

请注意,对于生产日志记录框架,simplelog不是一个好的选择。你应该使用像log4j这样的东西。