Как удалить длинный хеш для Rails App в Heroku и Papertrailapp?

У меня есть приложение Rails 5 в Heroku, и я настроил учетную запись Papertrailapp, чтобы проверять журналы проще, чем проверять вручную в консоли через heroku logs -t, И я люблю это. Но я чувствую, что там слишком много шума.

Раньше я активировал Rails-12-факторный гем, чтобы видеть журналы SQL в Heroku, но теперь они говорят, что с 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)

Это образец общей строки журнала, которую я вижу в Papertrail, поэтому я хотел бы подробно рассмотреть некоторые ее части и получить представление о том, как отключить некоторые из этих частей.

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

Итак, я думаю, мои вопросы:

  • Что это за хеш и как это полезно? Как убрать это из логов?
  • Как мне удалить DateTime из журналов Rails (учитывая, что Papertrailapp уже дает мне эту информацию) (какие плохие последствия это может принести?)
  • Как убрать I, часть, которая уже находится в INFO --

Обновление 26-02

Благодаря ответу @slothbear I0 вручную проверил логи с консоли. 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, и, возможно, тоже RequestID.

1 ответ

Решение

Длинный хэш request_id, Этот идентификатор позволяет отслеживать один запрос в журнале. Вы можете удалить идентификатор путем редактирования config/environments/production.rb:

config.log_tags = [ :request_id ]

Формат DateTime может быть установлен на что-то короткое в production.rbхотя некоторые символы остаются:

config.log_formatter.datetime_format = ""

Для большего контроля над сообщением после стандартных деталей Heroku (согласно интерпретации Papertrail) вам понадобится специальный форматер журналов. По умолчанию используется Logger:: Formatter, как описано в руководстве по настройке Rails Applications. Вы можете заменить регистратор по умолчанию в 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

Обратите внимание, что этот пользовательский форматер упакован TaggedLogging если RAILS_LOG_TO_STDOUT установлена ​​переменная окружения, которая по умолчанию установлена ​​в Heroku.

Плохие последствия удаления предметов? При отладке сложных проблем всегда лучше получать больше информации - и многие умные люди разработали информацию журнала по умолчанию. Если вы работаете с более простым приложением, вы, вероятно, в порядке. В идеале программа просмотра журналов позволяет отключать элементы по своему усмотрению - и включать их снова, если отладка требует их. Papertrail делает что-то из этого: нажмите " Опции" внизу экрана, и вы можете отключить время, приложение и название программы.

Другие вопросы по тегам