Скрыть рендеринг частичек из логов рельсов
Я полагаю, что по умолчанию при ведении журнала рельсов на производстве не выводится рендеринг всех партиалов. Это должно войти в разработку, но не на производство.
Тем не менее, я вижу это в производстве, и я не уверен, как его удалить. Мои журналы слишком шумные. Моя производственная среда - это 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: Мне всегда казалось странным, что они в первую очередь печатаются на информационном уровне.