【问题标题】:Configure OmniAuth logger to two different loggers depending the level of the error根据错误级别将 OmniAuth 记录器配置为两个不同的记录器
【发布时间】:2021-06-04 17:47:21
【问题描述】:

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

OmniAuth.config.logger = Rails.logger

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

有没有办法做到这一点?

【问题讨论】:

    标签: ruby-on-rails logging omniauth


    【解决方案1】:

    您可以创建一个代理记录器,将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)
    

    【讨论】:

    • 谢谢!这看起来很酷,但有一个.../omniauth.rb:6: warning: circular argument reference - error_logger。第 6 行是 def initialize... 。这会不会很危险?
    • @saralance 根据 RuboCop 这很糟糕,我更新了我的答案,
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2011-08-04
    • 2021-01-22
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多