根据错误级别将 OmniAuth 记录器配置为两个不同的记录器

Configure OmniAuth logger to two different loggers depending the level of the error

在我的 Rails 5 应用程序中,我有 'omniauth', '~> 2.0.3' 在我的配置 config/initializers/omniauth.rb 中,我将记录器附加到 Rails.logger

OmniAuth.config.logger = Rails.logger

我想做的是如果日志级别是 error 我想使用 Rollbar 而不是 Rails 记录器。

有办法吗?

您可以创建一个代理记录器,将 error 级别的日志委托给 Rollbar,其他级别将委托给 Rails.logger

class ProxyLogger
  delegate :error, to: :@error_logger
  delegate_missing_to :@default_logger

  def initialize(error_logger:, default_logger: Rails.logger)
    @default_logger = default_logger
    @error_logger = error_logger
  end
end

OmniAuth.config.logger = ProxyLogger.new(error_logger: Rollbar)