2015-11-24 1 views
0

Я работаю над сайтом Rails, который я не создавал, и некоторые из моих сообщений в журнале трудно найти в море сообщения «Expire fragment» в log/production.log. Кажется, это не указывает на какие-либо проблемы, поэтому я хотел бы подавить эти сообщения и упростить поиск сообщений, которые генерирует мой код. Есть ли способ их подавить?Как подавить сообщения журнала «Expire fragment» Rails?

ответ

0

Вы можете попробовать переопределить регистратор в инициализаторе, например here.

# Create logger that ignores messages containing “CACHE” 
class CacheFreeLogger < ::Logger 
    def debug(message, *args, &block) 
    super unless message.include? 'Expire fragment' 
    end 
end 

# Overwrite ActiveRecord’s logger 
ActiveRecord::Base.logger = ActiveSupport::TaggedLogging.new(
    CacheFreeLogger.new(STDOUT)) unless Rails.env.test? 
+0

Это может быть правильная идея, но ActiveRecord :: Base.logger не является регистратором, который мне нужно переопределить. По-видимому, ни один из них не является config.logger. – ShadSterling

+0

Глядя на [источник] (https://github.com/rails/rails/blob/f2bff250a017b6da76b7587a164643db31ffbf9b/actionpack/lib/action_controller/caching/fragments.rb#L79), вы можете переопределить [ActiveSupport :: Notifications.instrument ] (http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html) –

+0

Не похоже, что я могу переопределить это с помощью настраиваемого класса Logger. Как бы это выглядело? Если что-то подписалось на эти уведомления и отвечает на них, выдав сообщения журнала, я бы подумал, что настраиваемый регистратор все равно может подавлять сообщения. – ShadSterling