我在Heroku中有一个Rails 5应用程序,并设置了一个PaperTrailapp帐户,比通过heroku logs -t
手动检查控制台更容易检查日志。我很喜欢它。但是我觉得噪音太多。
在我用来激活rails-12因子宝石以便能够在Heroku中看到SQL日志之前,但是现在他们从Rails 5中说,不再需要。因此,现在我看到了带有问题的SQL,但它比以前更长。
Feb 24 20:38:59 myapp-staging app/web.1: I, [2017-02-25T01:38:59.133806 #4] INFO -- : [b2be3dbb-edb6-45f7-8686-d37304ad3782] Rendered shared_partials/_head.html.slim (0.8ms)
这是我在造纸上看到的常见日志的示例,因此我想逐渐消除其中的某些部分,并了解如何禁用其中的某些部分。
Feb 24 20:38:59 # Papertrail DateTime
myapp-staging # Papertrail system
app/web.1: # Heroku Dyno
I, # I guess this comes from the "new" Rails-12-factor way of logging, INFO, DEBUG, and so on
[2017-02-25T01:38:59.133806 #4] # I guess it's the DateTime from Heroku server
INFO -- : # Again, the type of log, but whole word. Rails generated?
[b2be3dbb-edb6-45f7-8686-d37304ad3782] # This is a hash that IDK where it comes from, nor what it means and what is used for
Rendered shared_partials/_head.html.slim (0.8ms) # The actual log message of Rails app
所以我想我的问题是:
- 那是什么哈希,这有用?如何从日志中删除它?
- 如何从轨道日志中删除日期时间(鉴于PaperTrailapp已经给了我这些信息)(可能会带来什么不好的后果?)
- 如何删除
I,
部分,该部分已经在INFO --
中
更新26-02
感谢@slothbear的答案,i0'已经手动检查了console heroku logs -t
的日志,而且我注意到papertrail dateTime似乎实际上是Heroku datetime的重构,因为常规消息看起来像这样:
2017-02-26T18:00:09.976118+00:00 # Heroku Datetime
app[web.1]: # Heroku source[dyno]
I, # Type of log
[2017-02-26T18:00:09.976009 #4] # Rails Datetime
INFO -- : # Again type of log
[a6612ea9-1a31-46d3-8c8d-7f93f971c379] # Request ID
Rendered shared_partials/_top_card.html.slim (3.5ms) # Actual Rails message
所以,知道Heroku DateTime将更难删除,我想我会删除Rails DateTime,并且也可能是请求。
长哈希是 request_id
。此ID允许您在日志中跟踪单个请求。您可以通过编辑config/environments/production.rb
删除ID:
config.log_tags = [ :request_id ]
DateTime格式可以设置为production.rb
中的简短内容,尽管仍然存在一些字符:
config.log_formatter.datetime_format = ""
为了在Heroku-标准零件之后进行更多控制(如纸质编解释)之后,您需要自定义的日志格式器。如"配置导轨应用"指南中所述,生产默认值为Logger ::格式。您可以替换production.rb
中的默认记录器:
# config.log_formatter = ::Logger::Formatter.new
class UnmultiFormatter < ::Logger::Formatter
def call(severity, time, progname, msg)
"unmultilog [#{severity}]: #{msg}n"
end
end
config.log_formatter = UnmultiFormatter.new
请注意,如果设置了RAILS_LOG_TO_STDOUT
环境变量,则该自定义格式化将由TaggedLogging
包裹 - 默认情况下是在Heroku上设置的。
删除物品的不良后果?当调试复杂问题时,更多的信息总是更好 - 默认的日志信息是由许多聪明人设计的。如果您使用更简单的应用程序,则可能可以。理想情况下,日志查看器将让您根据需要关闭项目 - 如果调试需要它们,请将其重新打开。PaperTrail执行了一些操作:单击屏幕底部的选项,您可以关闭时间,应用程序和程序名称。