Spec-Zone.ru › Ruby on Rails 7.2

класс ActiveSupport::BroadcastLogger

Родитель:
Объект
Включенные модули:
ActiveSupport::LoggerSilence

Вещательный логгер Active Support Logger

Вещательный логгер используется для записи сообщений во множество IO. Он часто используется в разработке для отображения сообщений в стандартном выводе и записи их в файл (development.log). С помощью вещательного логгера вы можете транслировать свои логи в неограниченное количество стоков.

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

Вещание ваших логов.

stdout_logger = Logger.new(STDOUT)
file_logger   = Logger.new("development.log")
broadcast = BroadcastLogger.new(stdout_logger, file_logger)

broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.

Добавление логгера в вещание.

stdout_logger = Logger.new(STDOUT)
broadcast = BroadcastLogger.new(stdout_logger)
file_logger   = Logger.new("development.log")
broadcast.broadcast_to(file_logger)

broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.

Изменение уровня логов для всех вещаемых логгеров.

stdout_logger = Logger.new(STDOUT)
file_logger   = Logger.new("development.log")
broadcast = BroadcastLogger.new(stdout_logger, file_logger)

broadcast.level = Logger::FATAL # Modify the log level for the whole broadcast.

Остановка вещания логов в сток.

stdout_logger = Logger.new(STDOUT)
file_logger   = Logger.new("development.log")
broadcast = BroadcastLogger.new(stdout_logger, file_logger)
broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.

broadcast.stop_broadcasting_to(file_logger)
broadcast.info("Hello world!") # Writes the log *only* to STDOUT.

Хотя бы один сток должен быть частью вещания. В противном случае ваши логи никуда не будут записаны. Например:

broadcast = BroadcastLogger.new
broadcast.info("Hello world") # The log message will appear nowhere.

Если вы добавляете пользовательский логгер с пользовательскими методами в вещание, то ‘BroadcastLogger` будет их проксировать и возвращать исходное значение или массив исходных значений, в зависимости от того, сколько логгеров в вещании ответили на метод:

class MyLogger < ::Logger
  def loggable?
    true
  end
end

logger = BroadcastLogger.new
logger.loggable? # => A NoMethodError exception is raised because no loggers in the broadcasts could respond.

logger.broadcast_to(MyLogger.new(STDOUT))
logger.loggable? # => true
logger.broadcast_to(MyLogger.new(STDOUT))
puts logger.broadcasts # => [MyLogger, MyLogger]
logger.loggable? # [true, true]

Атрибуты

broadcasts[R]

Возвращает все логгеры, которые являются частью этого вещания.

formatter[R]
progname[RW]

Публичные методы класса

new(*loggers) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 82
def initialize(*loggers)
  @broadcasts = []
  @progname = "Broadcast"

  broadcast_to(*loggers)
end

Общедоступные методы экземпляра

<<(message) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 112
def <<(message)
  dispatch { |logger| logger.<<(message) }
end
add(*args, &block) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 116
def add(*args, &block)
  dispatch { |logger| logger.add(*args, &block) }
end
Также переименовано в: log
broadcast_to(*loggers) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 93
def broadcast_to(*loggers)
  @broadcasts.concat(loggers)
end

Добавить логгеры в рассылку.

broadcast_logger = ActiveSupport::BroadcastLogger.new
broadcast_logger.broadcast_to(Logger.new(STDOUT), Logger.new(STDERR))
close() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 162
def close
  dispatch { |logger| logger.close }
end
debug(*args, &block) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 121
def debug(*args, &block)
  dispatch { |logger| logger.debug(*args, &block) }
end
debug!() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 173
def debug!
  dispatch { |logger| logger.debug! }
end

Устанавливает уровень логирования Logger::DEBUG для всей рассылки.

debug?() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 168
def debug?
  @broadcasts.any? { |logger| logger.debug? }
end

True если уровень логирования позволяет записывать сообщения с уровнем Logger::DEBUG хотя бы в одну рассылку. False в противном случае.

error(*args, &block) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 133
def error(*args, &block)
  dispatch { |logger| logger.error(*args, &block) }
end
error!() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 206
def error!
  dispatch { |logger| logger.error! }
end

Устанавливает уровень логирования Logger::ERROR для всей рассылки.

error?() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 201
def error?
  @broadcasts.any? { |logger| logger.error? }
end

True если уровень логирования позволяет записывать сообщения с уровнем Logger::ERROR хотя бы в одну рассылку. False в противном случае.

fatal(*args, &block) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 137
def fatal(*args, &block)
  dispatch { |logger| logger.fatal(*args, &block) }
end
fatal!() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 217
def fatal!
  dispatch { |logger| logger.fatal! }
end

Устанавливает уровень логирования Logger::FATAL для всей рассылки.

fatal?() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 212
def fatal?
  @broadcasts.any? { |logger| logger.fatal? }
end

True если уровень логирования позволяет записывать сообщения с уровнем Logger::FATAL хотя бы в одну рассылку. False в противном случае.

formatter=(formatter) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 145
def formatter=(formatter)
  dispatch { |logger| logger.formatter = formatter }

  @formatter = formatter
end
info(*args, &block) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 125
def info(*args, &block)
  dispatch { |logger| logger.info(*args, &block) }
end
info!() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 184
def info!
  dispatch { |logger| logger.info! }
end

Устанавливает уровень логирования Logger::INFO для всей рассылки.

info?() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 179
def info?
  @broadcasts.any? { |logger| logger.info? }
end

True если уровень логирования позволяет записывать сообщения с уровнем Logger::INFO хотя бы в одну рассылку. False в противном случае.

initialize_copy(other) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 221
def initialize_copy(other)
  @broadcasts = []
  @progname = other.progname.dup
  @formatter = other.formatter.dup

  broadcast_to(*other.broadcasts.map(&:dup))
end
level() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 108
def level
  @broadcasts.map(&:level).min
end
level=(level) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 151
def level=(level)
  dispatch { |logger| logger.level = level }
end
Также переименовано в: sev_threshold=
local_level=(level) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 156
def local_level=(level)
  dispatch do |logger|
    logger.local_level = level if logger.respond_to?(:local_level=)
  end
end
log(*args, &block)
Псевдоним для: add
sev_threshold=(level)
Псевдоним для: level=
stop_broadcasting_to(logger) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 104
def stop_broadcasting_to(logger)
  @broadcasts.delete(logger)
end

Удалить логгер из рассылки. При удалении логгера сообщения, отправленные в рассылку, больше не будут записываться в его приемник.

sink = Logger.new(STDOUT)
broadcast_logger = ActiveSupport::BroadcastLogger.new

broadcast_logger.stop_broadcasting_to(sink)
unknown(*args, &block) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 141
def unknown(*args, &block)
  dispatch { |logger| logger.unknown(*args, &block) }
end
warn(*args, &block) Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 129
def warn(*args, &block)
  dispatch { |logger| logger.warn(*args, &block) }
end
warn!() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 195
def warn!
  dispatch { |logger| logger.warn! }
end

Устанавливает уровень логирования Logger::WARN для всей рассылки.

END_OF_DOCUMENT_MARKER
warn?() Показать исходный код
# File activesupport/lib/active_support/broadcast_logger.rb, line 190
def warn?
  @broadcasts.any? { |logger| logger.warn? }
end

True если уровень логирования допускает запись записей с уровнем серьезности Logger::WARN, по крайней мере, в одну трансляцию. False в противном случае.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API