【问题标题】:Dynamically configuring Apache Http client动态配置 Apache Http 客户端
【发布时间】:2013-10-24 04:49:38
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 的东西。

    【讨论】:

    • 嗨巴拉克,我正在尝试这个 System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.SimpleLog");但无法获得任何日志输出(甚至在控制台上也没有)。 System.setProperty("org.apache.commons.logging.simplelog.showdatetime","true"); System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http","DEBUG"); System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.wire","DEBUG"); java.util.logging.Logger.getLogger("org.apache.http.wire").setLevel(Level.ALL);
    • 您建议我在代码中的何处添加日志记录配置?我一定很困惑,或者这是一个糟糕的设计?如果在我的应用程序中硬编码,它似乎不是很“可配置”。
    • 日志配置放在一个文件中,通常应该在进程工作目录中。 log4j.xml 之类的东西。配置文件名取决于您选择的日志库实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多