1

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

4

1 回答 1

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 的东西。

于 2013-10-30T08:02:38.443 回答