在development环境中,rails logger记录所有ActionCable事件,这有时很烦人(对于我的项目,它不时地发送消息,日志尾像野马一样运行)。抑制ActionCable中所有事件日志的有效方法是什么?另外,如何抑制某些特定的ActionCable事件?
development
l7mqbcuq1#
要完全禁用ActionCable的日志记录功能,您应该将ActionCable配置为使用不执行任何操作的日志记录器
ActionCable.server.config.logger = Logger.new(nil)
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)行来模拟原始行为。谢谢
#logger.info action_signature(action, data)
92vpleto3#
要抑制ActionCable中的所有事件日志,您可以将所需环境的配置文件(例如config/environments/development.rb):
config.action_cable.logger = Logger.new(nil)
或者,如果你喜欢,在初始化器中,就像@Brazhnyk Yuriy建议的那样:
IDK用于特定的ActionCable事件,但如果您试图禁止记录敏感数据,也许可以使用filter_parameters:
config.action_cable.filter_parameters = [:password]
最近由this PR添加到ActionCable。
3条答案
按热度按时间l7mqbcuq1#
要完全禁用ActionCable的日志记录功能,您应该将ActionCable配置为使用不执行任何操作的日志记录器
jyztefdp2#
我也是,终于找到了解决办法。您应该覆盖/app/channels/application_cable/channel.rb中的代码,如下所示
您可以通过取消注解掉
#logger.info action_signature(action, data)
行来模拟原始行为。谢谢
92vpleto3#
要抑制ActionCable中的所有事件日志,您可以将所需环境的配置文件(例如config/environments/development.rb):
或者,如果你喜欢,在初始化器中,就像@Brazhnyk Yuriy建议的那样:
IDK用于特定的ActionCable事件,但如果您试图禁止记录敏感数据,也许可以使用filter_parameters:
最近由this PR添加到ActionCable。