如何将对rails控制器操作的调用静音

Str*_*ine 4 ruby logging ruby-on-rails

我已经弄清楚如何通过在actionger的方法中将所有内容包装在logger.silence块中来使行动的内容静音.

但是,我仍然可以调用日志文件中显示的操作.

IE:

Processing DashboardController#update (for 66.201.17.166 at 2009-09-09 19:03:27) [GET]
  Parameters: {"todos"=>{"user"=>"25", "sfu_type"=>""}}
Completed in 1021ms (View: 439, DB: 438) | 200 OK [http://my.host.com/dashboard/update?todos%5Buser%5D=25&todos%5Bsfu_type%5D=]
Run Code Online (Sandbox Code Playgroud)

我希望保持上述内容不会一起写入日志,或者将其重定向到不同的日志文件(即dashboard.log),这样就会停止使production.log文件混乱.

每次登录的每个用户的ajax调用更新时,我都会将上面的示例写入日志.这大约每2分钟更新一次,因此生产日志文件充斥着无用的日志消息.

小智 8

迟到的答案,但我花了很多时间寻找答案的互联网,因此:

在包含您要忽略的操作的控制器中,覆盖logger方法并返回某些操作的rails默认值,以及需要特殊处理的自定义记录器或nil.

def logger
  if params[:action] == 'action_to_ignore'
    # return custom logger or nil
  else
    RAILS_DEFAULT_LOGGER
  end
end
Run Code Online (Sandbox Code Playgroud)

我怀疑有一种更简单的方法,如果它存在,我很乐意听到它.