隐藏rails日志中部分的渲染

时间:2013-06-26 05:19:05

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

我相信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) 

5 个答案:

答案 0 :(得分:19)

对于Rails 4(至少):

在config / environments / development.rb

中试试这个
config.action_view.logger = nil

答案 1 :(得分:6)

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

答案 2 :(得分:0)

我从papertrail得到了以下答案:

  

我认为处理此问题的最快方法是使用我们的日志过滤   功能。这将让你放弃任何匹配正则表达式和   将使您不必进行任何应用程序配置更改。

     

从长远来看,你可能希望在这些消息中保持沉默   资源。 Lograge可能是你最好的选择。你可能会发现它   还删除了一些其他位但是给它一个去,让我知道什么   你想。

     

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

     

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

答案 3 :(得分:0)

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

注意,这是针对5.2的。我不确定它是否可以在其他版本上使用。

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

ActionView::LogSubscriber.include(ViewLoggingOverride)

相关的路轨代码:

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

答案 4 :(得分:0)

这很常见,以至于在 Papertrail 通知您日志记录高峰的电子邮件中,有一个包含此确切示例的链接。

This is the link

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

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

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