ruby-on-rails - faraday如何设置日志级别

标签 ruby-on-rails ruby faraday

我最近将我的 http 客户端切换到 faraday,一切都按预期工作。我有以下代码来创建连接:

@connection = Faraday.new(:url => base_url) do |faraday|
              faraday.use Custim::Middleware
              faraday.request :url_encoded             # form-encode POST params
              faraday.request :json
              faraday.response :json, :content_type => /\bjson$/
              faraday.response :logger
              faraday.adapter Faraday.default_adapter  # make requests with Net::HTTP

法拉第记录器帮助在控制台输出上打印所有日志。但是我不想在控制台输出上打印所有日志级别。如何将日志级别设置为只打印错误日志? .

我使用的是法拉第0.8.9版本

最佳答案

有一种方法,但似乎根本没有记录。我在 0.9.1 上试过这个,但它也应该在 0.8.9 上工作。

# provide your own logger
logger = Logger.new $stderr
logger.level = Logger::ERROR
Faraday.new(:url => base_url) do |faraday|
  # ...
  faraday.response :logger, logger
  # ...
end

这是可行的,因为 faraday.response :logger 可能使用 Faraday::Response::Logger 创建了一个中间件,它具有以下构造函数:

def initialize(app, logger = nil)

奖金

在0.9.1中,构造函数签名为

def initialize(app, logger = nil, options = {})

该类还包含:DEFAULT_OPTIONS = { :bodies => false } 这可能意味着您可以在记录器之后传递一个 :bodies 选项来控制记录 body 。显然,您甚至可以使用 {bodies: {response: true}} 来记录响应主体而不是请求主体。

关于ruby-on-rails - faraday如何设置日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875681/

相关文章:

ruby-on-rails - 特拉维斯 CI : FATAL: role does not exist

ruby-on-rails - Rails - SSL 不适用于裸域

ruby-on-rails - 从 Rails 中删除 Bootstrap

ruby - perl 和 ruby​​ 之间河豚加密的区别

ruby - 在 Ruby 中提取 URI 最后一段的最佳方法

ruby-on-rails 初始化程序在 irb 中不起作用,但在正常运行应用程序时起作用

ruby SimpleOAuth 错误

ruby-on-rails - 全新安装后尝试 "rails new"时出错

ruby - 确定法拉第请求是否成功

ruby-on-rails - 使用 Faraday 和 Omniauth 进行 Rails 集成测试