Скрыть рендеринг частичек из логов рельсов

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

Тем не менее, я вижу это в производстве, и я не уверен, как его удалить. Мои журналы слишком шумные. Моя производственная среда - это 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) 

3 ответа

Решение

Я получил следующий ответ из бумажной трассы:

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

В долгосрочной перспективе вы, вероятно, захотите замолчать эти сообщения в источнике. Лограж, вероятно, ваш лучший выбор для этого. Вы можете найти, что это также удаляет несколько других битов, но попробуйте и дайте мне знать, что вы думаете.

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

Дайте мне знать, если вам нужна помощь с чем-либо из перечисленного выше

Для Rails 4 (как минимум):

Попробуйте это в вашем config/environment /development.rb

config.action_view.logger = nil

Используйте Lograge, он удаляет время рендеринга для частичных

Вместо того, чтобы полностью отключить ведение журнала действий (как описано в другом ответе), я решил изменить уровень ведения журнала для рендеринга на 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

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

Это ссылка.

Я немного изменил регулярное выражение:

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

PS: Мне всегда казалось странным, что они в первую очередь печатаются на информационном уровне.

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