【问题标题】:How to silence the call to a rails controller's action all together如何使对 Rails 控制器操作的调用全部静音
【发布时间】:2009-09-10 02:13:51
【问题描述】:

我已经想出了如何通过将动作方法中的所有内容包装在 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=]

我想避免将上述内容一起写入日志,或者将其重定向到不同的日志文件(即dashboard.log),这样它就不会弄乱production.log文件。

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

【问题讨论】:

    标签: ruby-on-rails ruby logging


    【解决方案1】:

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

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

    def logger
      if params[:action] == 'action_to_ignore'
        # return custom logger or nil
      else
        RAILS_DEFAULT_LOGGER
      end
    end
    

    我怀疑有一种更简单的方法,如果存在,我很想听听。

    【讨论】:

    • 似乎适用于我在 Rails 3 上,并且在本地运行 :production 环境时也适用,但似乎不适用于 Heroku。更具体地说,Heroku 不断输出“渲染”消息。有什么想法吗?
    【解决方案2】:

    logger 电话分散在ActionController::Base 各处。我能想到的唯一方法是猴子修补一堆方法并检查相关控制器的名称。

    也许覆盖this method 是您需要做的所有事情。没有把握。祝你好运:)

    【讨论】:

    • 这可能是删除此信息记录的唯一可用方法 - 必须在某个时候对此进行调查才能看到 - 谢谢
    • 仅供参考,我自己也做了类似的事情。如果您覆盖控制器的 logger 实例方法,您将完全禁用日志记录。
    【解决方案3】:

    这看起来是一个非常好的、灵活的使用中间件的解决方案: http://dennisreimann.de/blog/silencing-the-rails-log-on-a-per-action-basis/

    【讨论】:

      【解决方案4】:

      您是否设置了生产日志记录级别?

      配置>环境>生产.rb

      config.log_level = :warn(默认为 :info)

      【讨论】:

      • 是的-无论日志级别是什么,您仍然可以在日志中获得控制器/操作的条目
      【解决方案5】:

      在应用程序控制器中,您可以覆盖记录器:

      def log_error(exception)
        #super(exception)
        #do my logging here
      end
      

      当关键应用发生错误时,我会使用它向我发送电子邮件。

      【讨论】:

      • 或者我可以回答你的问题而不是写我在做什么
      • 鲁本,我认为这仍然只是处理调用控制器操作后发生的日志记录,而不是修改对控制器/操作的记录信息调用 - 对吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2018-05-20
      • 1970-01-01
      相关资源
      最近更新 更多