禁用ActionCable事件的rails日志

Sha*_*kil 12 logging ruby-on-rails ruby-on-rails-5 actioncable

development环境中,rails logger记录所有有时令人讨厌的ActionCable事件(对于我的项目,它不时地传输消息并且日志尾部像野马一样运行).什么是从ActionCable中抑制所有事件日志的有效方法?另外,如何抑制某些特定的ActionCable事件?

Bra*_*riy 13

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

ActionCable.server.config.logger = Logger.new(nil)
Run Code Online (Sandbox Code Playgroud)

  • 为了澄清,这一行在config/environments/development.rb中 (6认同)
  • 我仍然看到: │ │ Started GET "/cable?...." for 1.2.3.4 at 2022-07-10 03:19:09 +0000 (3认同)

小智 3

同样在这里,我终于找到了解决方案。您应该覆盖 /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
Run Code Online (Sandbox Code Playgroud)

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

谢谢。