21

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

5 回答 5

24

对于 Rails 4(至少):

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

config.action_view.logger = nil
于 2016-02-15T18:56:46.910 回答
7

使用Lograge,它消除了局部渲染时间

于 2014-01-07T14:49:41.613 回答
2

我从papertrail得到以下答案:

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

从长远来看,您可能希望从源头上使这些消息静音。Lograge 可能是你最好的选择。您可能会发现它还删除了其他一些位,但试一试,让我知道您的想法。

我知道目前这可能与您无关,但为了将来的使用,您可能还会在此处找到一些其他有用的提示。它涵盖日志记录、删除静态资产请求和不必要的操作,

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

于 2013-06-28T18:58:29.680 回答
2

我没有完全禁用 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)

相关导轨代码:

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

于 2019-09-10T17:00:11.897 回答
0

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

这是链接

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

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

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

于 2020-06-23T23:26:21.170 回答