Ruby on rails 从rails日志隐藏部分的呈现

Ruby on rails 从rails日志隐藏部分的呈现,ruby-on-rails,ruby-on-rails-3,heroku,unicorn,papertrail-app,Ruby On Rails,Ruby On Rails 3,Heroku,Unicorn,Papertrail App,我相信rails在产品中的默认行为是不输出所有部分的呈现。这应该登录到开发中,而不是生产中 然而,我在生产中看到了这一点,我不知道如何删除它。我的日志太吵了。我的生产环境是Heroku运行Unicorn并使用Papertrail查看我的日志。我知道Unicorn在日志中做了一些不可靠的事情,为了让它们正常工作,首先我必须将此添加到我的生产中。rb: config.logger = Logger.new(STDOUT) config.logger.level = Logger.const_

我相信rails在产品中的默认行为是不输出所有部分的呈现。这应该登录到开发中,而不是生产中

然而,我在生产中看到了这一点,我不知道如何删除它。我的日志太吵了。我的生产环境是Heroku运行Unicorn并使用Papertrail查看我的日志。我知道Unicorn在日志中做了一些不可靠的事情,为了让它们正常工作,首先我必须将此添加到我的生产中。rb:

  config.logger = Logger.new(STDOUT)
  config.logger.level = Logger.const_get('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) 

我从书面记录中得到了以下答案:

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

从长远来看,您可能希望在 来源。Lograge可能是你最好的选择。你会找到的 也删除了一些其他的位,但试一试,让我知道什么 你想

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

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

使用时,它会删除Rails 4的部分渲染时间(至少):

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

config.action_view.logger = nil

我没有完全禁用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)
相关轨道代码:


这是如此普遍,以至于在通知您日志峰值的书面记录电子邮件中,有一个与此确切示例的链接

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

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

PS:我总是觉得奇怪,它们一开始是在信息级别打印的。

你做了heroku配置:add LOG\u level=“info”?大卫,是的。我试着将其设置为“debug”和“info”,以确认详细程度会发生变化。的确如此。但即使在“信息”级别,我仍然可以得到所有这些呈现的语句。我相信我可以把音量调低一点,把它们藏起来。但是,除了所有部分的这些“呈现”语句之外,详细性非常好。我想找出如何隐藏这些内容。另请参见以下答案:在这个imo不完整/不准确的答案上展开一点:Lograge是一个改变Rails默认日志格式的gem(即插即用)。它没有为每个请求记录成吨的不同行,而是尝试使用键值格式将所有相关信息放入一行(请求数据/控制器/定时等)。部分呈现日志在该过程中被禁用/跳过,因为它被认为是非必需的(至少在生产系统上)。所以,是的,我同意这是重新格式化Rails日志的最佳方式,但它不仅仅是“删除部分的渲染时间”……值得注意的是,lograge改变了日志的顺序,这对某些人来说可能并不理想。注意:这是一个“要么全有,要么全无”的选项——它不仅仅用于隐藏部分视图日志。它隐藏所有视图日志记录。(这对于调试和尝试查看特定输出非常有用,而不会隐藏在视图日志详细信息中。)