класс 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
-
Вставьте в строку, чтобы очистить все предыдущие последовательности ANSI.
- CYAN
- GREEN
- MAGENTA
- RED
- WHITE
- YELLOW
Атрибуты
Публичные методы класса
Сбросить все логи подписчиков ::log_subscribers.
# File activesupport/lib/active_support/log_subscriber.rb, line 69 def flush_all! logger.flush if logger.respond_to?(:flush) end
# 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
Защищённые методы экземпляра
Установить цвет, используя строку или одну из определённых констант. Если третий параметр равен true, он также добавляет полужирный шрифт к строке. Основано на реализации Highline и автоматически добавляет CLEAR в конец возвращаемой строки.
# 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
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.