【问题标题】:httparty: how to log request?httparty:如何记录请求?
【发布时间】:2014-03-14 20:09:15
【问题描述】:

如何记录使用 httparty 发送的请求?

HTTParty.post(
          @application_url,
          :headers => {
            "Accept"        => "application/json",
            "Content-Type"  => "application/json; charset=utf-8"
          },
          :body => {
            "ApplicationProfileId" => application.applicationProfileId
          }.to_json
        )

【问题讨论】:

    标签: ruby logging httprequest httparty


    【解决方案1】:

    在班级级别使用debug_output

    class Foo
      include HTTParty
      debug_output $stdout
    end
    

    或每个请求

    response = HTTParty.post(url, :body => body, :debug_output => $stdout)
    

    【讨论】:

    • 很好,似乎没有其他人知道如何根据请求执行此操作
    • 注意:如果你深入挖掘它所基于的 Net::HTTP 库,你会发现它永远不应该在生产中使用ruby-doc.org/stdlib-2.3.1/libdoc/net/http/rdoc/Net/…
    • 所以我会推荐:SomeLogger.info(HTTParty.get(uri, query: parameters).request.last_uri)
    【解决方案2】:

    使用类级别的debug_output 方法设置发送调试信息的输出流。

    【讨论】:

    • Rails.logger 可以和debug_output 一起使用吗?
    • debug_output Rails.logger 在 Rails 4 中有效,但在 Rails 3 中无效(显然 Rails 3 版本缺少 << 运算符的实现)。
    • @VishalVijay:这适用于 Rails 3,尽管格式与 debug_output 略有不同:logger Rails.logger, :debug, :curl
    • 谢谢。我试试这个
    【解决方案3】:

    您可以使用内置记录器:

    my_logger = Rails.logger || Logger.new # use what you like
    my_logger.info "The default formatter is :apache. The :curl formatter can also be used."
    my_logger.info "You can tell which method to call on the logger too. It is info by default."
    
    HTTParty.get "http://google.com", logger: my_logger, log_level: :debug, log_format: :curl
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      相关资源
      最近更新 更多