ruby-on-rails 禁用ActionCable事件的Rails日志

7eumitmz  于 2023-07-01  发布在  Ruby
关注(0)|答案(3)|浏览(123)

development环境中,rails logger记录所有ActionCable事件,这有时很烦人(对于我的项目,它不时地发送消息,日志尾像野马一样运行)。抑制ActionCable中所有事件日志的有效方法是什么?另外,如何抑制某些特定的ActionCable事件?

l7mqbcuq

l7mqbcuq1#

要完全禁用ActionCable的日志记录功能,您应该将ActionCable配置为使用不执行任何操作的日志记录器

ActionCable.server.config.logger = Logger.new(nil)
jyztefdp

jyztefdp2#

我也是,终于找到了解决办法。您应该覆盖/app/channels/application_cable/channel.rb中的代码,如下所示

module ApplicationCable

  class Channel < ActionCable::Channel::Base

    def dispatch_action(action, data)

      #logger.info action_signature(action, data)

      if method(action).arity == 1
        public_send action, data
      else
        public_send action
      end
    end
  end
end

您可以通过取消注解掉#logger.info action_signature(action, data)行来模拟原始行为。
谢谢

92vpleto

92vpleto3#

要抑制ActionCable中的所有事件日志,您可以将所需环境的配置文件(例如config/environments/development.rb):

config.action_cable.logger = Logger.new(nil)

或者,如果你喜欢,在初始化器中,就像@Brazhnyk Yuriy建议的那样:

ActionCable.server.config.logger = Logger.new(nil)

IDK用于特定的ActionCable事件,但如果您试图禁止记录敏感数据,也许可以使用filter_parameters:

config.action_cable.filter_parameters = [:password]

最近由this PR添加到ActionCable。

相关问题