【问题标题】:Hide rendering of partials from rails logs从 Rails 日志中隐藏部分渲染
【发布时间】:2013-06-23 02:53:15
【问题描述】:

我相信 Rails 登录生产的默认行为是不输出所有部分的渲染。这应该登录开发而不是生产。

但是,我在生产中看到了这种情况,但我不确定如何删除它。我的日志太吵了。我的生产环境是 Heroku 运行 Unicorn 并使用 Papertrail 查看我的日志。我知道 Unicorn 用日志做了一些奇怪的事情,为了让它们首先正常工作,我必须将它添加到我的 production.rb 中:

  config.logger = Logger.new(STDOUT)
  config.logger.level = Logger.const_get('INFO')

(此处解释:http://help.papertrailapp.com/kb/configuration/unicorn

但即使使用 log_level INFO,我在所有日志中都会看到大量此类信息:

Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.7ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (2.1ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_category.html.erb (4.8ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.3ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (0.4ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_category.html.erb (4.4ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.3ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (0.3ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_category.html.erb (1.8ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.4ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (4.6ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_category.html.erb (2.1ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.3ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (0.4ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_category.html.erb (4.1ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.2ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (1.8ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_category.html.erb (6.0ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.5ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (0.8ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_category.html.erb (1.9ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_caption.html.erb (0.3ms) 
Jun 25 22:15:15 tacktile app/web.1:    Rendered photos/pieces/_rights.html.erb (0.7ms) 

【问题讨论】:

  • 你完成heroku config:add LOG_LEVEL="info"了吗?
  • 大卫,是的。我尝试将其设置为“调试”与“信息”以确认详细程度发生了变化。确实如此。但即使在“信息”级别,我仍然会得到所有这些呈现的陈述。我敢肯定我可以进一步调低并隐藏它们。但是对于所有部分的这些“渲染”语句,冗长是很大的except。我想弄清楚如何隐藏这些。
  • 另请参阅此答案:stackoverflow.com/a/12003652/514483

标签: ruby-on-rails ruby-on-rails-3 heroku unicorn papertrail-app


【解决方案1】:

对于 Rails 4(至少):

在你的 config/environments/development.rb 中试试这个

config.action_view.logger = nil

【讨论】:

  • 注意:这是一个“全有或全无”选项——它不仅仅用于隐藏部分视图日志。它隐藏了 all 视图日志记录。 (这对于调试和尝试查看特定输出而不被隐藏在查看日志冗长中很有用。)
【解决方案2】:

使用Lograge,它会删除部分渲染时间

【讨论】:

  • 扩展一下这个 imo 不完整/不准确的答案:Lograge 是一个可以改变 Rails 的默认日志格式的 gem(即插即用)。它不是为每个请求记录大量不同的行,而是尝试使用键值格式将所有相关信息放入一行(请求数据/控制器/时序等)。部分渲染日志在过程中被禁用/跳过,因为它被认为是非必要的(至少在生产系统上)。所以是的,我同意这是重新格式化 Rails 日志记录的最佳方式,但它不仅仅是“删除部分渲染时间”......
  • 值得注意的是 lograge 会改变日志的顺序,这对某些人来说可能并不理想。
【解决方案3】:

我从一个papertrail得到以下答案:

我认为处理这个问题的最快方法是使用我们的日志过滤 功能。这会让你删除任何与正则表达式匹配的东西 将使您不必进行任何应用配置更改。

从长远来看,您可能希望在 资源。 Lograge 可能是你最好的选择。你可能会发现 还删除了其他一些位,但试一试,让我知道什么 你认为。

我知道目前这可能与您无关,但是对于 未来的使用您可能还会在此处找到一些其他有用的提示。它涵盖 lograge,删除静态资产请求和不必要的操作,

如果您在上述任何事情上需要帮助,请告诉我。

【讨论】:

    【解决方案4】:

    我没有完全禁用 actionview 日志记录(如另一个答案中所述),而是选择将渲染的日志记录级别更改为 DEBUG。这样,通过将日志级别设置为INFO 或更高级别,可以轻松地将其从生产日志中省略。

    注意,这是针对 rails 5.2 的。我不确定它是否适用于其他版本。

    module ViewLoggingOverride
      def info(progname = nil, &block)
        logger.debug(progname, &block) if logger
      end
    end
    
    ActionView::LogSubscriber.include(ViewLoggingOverride)
    

    相关的rails代码:

    https://github.com/rails/rails/blob/5-2-stable/actionview/lib/action_view/log_subscriber.rb

    https://github.com/rails/rails/blob/5-2-stable/activesupport/lib/active_support/log_subscriber.rb#L93-L99

    【讨论】:

      【解决方案5】:

      这种情况非常常见,以至于在通知您日志记录高峰的 Papertrail 电子邮件中,有一个与这个确切示例的链接。

      This is the link.

      我稍微调整了正则表达式:

      /\A\s{3}Rendered \w+\/_.+\.erb \(\d+\.\d+ms\)\z/
      

      PS:我总是觉得奇怪的是它们最初是在信息级别打印的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-10
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多