класс ActiveSupport::LogSubscriber
ActiveSupport::LogSubscriber — это объект, предназначенный для обработки уведомлений ActiveSupport::Notifications с единственной целью — их протоколирование. Подписчик журналов направляет уведомления зарегистрированному объекту на основе его заданного пространства имен.
Пример: подписчик журнала Active Record, отвечающий за протоколирование запросов:
module ActiveRecord
class LogSubscriber < ActiveSupport::LogSubscriber
def sql(event)
"#{event.payload[:name]} (#{event.duration}) #{event.payload[:sql]}"
end
end
end
И, наконец, он зарегистрирован как:
ActiveRecord::LogSubscriber.attach_to :active_record
Поскольку нам необходимо знать все методы экземпляра перед присоединением подписчика журнала, строка выше должна вызываться после определения вашего ActiveRecord::LogSubscriber.
После конфигурации, всякий раз, когда публикуется уведомление «sql.active_record», событие (ActiveSupport::Notifications::Event) должным образом перенаправляется в метод sql.
Подписчик журнала также имеет некоторые вспомогательные функции для работы с протоколированием и автоматически очищает все журналы при завершении запроса (через уведомление action_dispatch.callback) в среде Rails.
Константы
- BLACK
-
Цвета
- BLUE
- BOLD
- CLEAR
-
Встраивается в String, чтобы очистить все предыдущие последовательности ANSI.
- CYAN
- GREEN
- MAGENTA
- RED
- WHITE
- YELLOW
Атрибуты
Публичные методы класса
# File activesupport/lib/active_support/log_subscriber.rb, line 69 def flush_all! logger.flush if logger.respond_to?(:flush) end
Очистить все журналы ::log_subscribers.
# File activesupport/lib/active_support/log_subscriber.rb, line 64 def log_subscribers subscribers end
# File activesupport/lib/active_support/log_subscriber.rb, line 56
def logger
@logger ||= if defined?(Rails) && Rails.respond_to?(:logger)
Rails.logger
end
end Публичные методы экземпляра
# File activesupport/lib/active_support/log_subscriber.rb, line 82
def finish(name, id, payload)
super if logger
rescue Exception => e
logger.error "Could not log #{name.inspect} event. #{e.class}: #{e.message} #{e.backtrace}"
end # File activesupport/lib/active_support/log_subscriber.rb, line 74 def logger LogSubscriber.logger end
# File activesupport/lib/active_support/log_subscriber.rb, line 78 def start(name, id, payload) super if logger end
Защищенные методы экземпляра
# File activesupport/lib/active_support/log_subscriber.rb, line 102
def color(text, color, bold=false)
return text unless colorize_logging
color = self.class.const_get(color.upcase) if color.is_a?(Symbol)
bold = bold ? BOLD : ""
"#{bold}#{color}#{text}#{CLEAR}"
end Устанавливает цвет, используя символ или одну из определенных констант. Если третий параметр установлен на true, он также добавляет полужирный шрифт к строке. Это основано на реализации Highline и будет автоматически добавлять CLEAR в конец возвращаемой строки.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.