class Archfiend::Logging::MultiLogger

A basic class that forwards all log calls to loggers it was initialized with.

Attributes

loggers[R]

Public Class Methods

new(*loggers) click to toggle source

@param loggers [Array<Logger>] A list of loggers to forward messages to

# File lib/archfiend/logging/multi_logger.rb, line 8
def initialize(*loggers)
  @loggers = loggers.flatten
  @responding_loggers = {}
end

Private Instance Methods

method_missing(method_name, *args, &block) click to toggle source

@return [Object] The return value is forwarded from the first logger that responds to the method_name

Calls superclass method
# File lib/archfiend/logging/multi_logger.rb, line 16
def method_missing(method_name, *args, &block)
  return super unless responding_loggers(method_name).any?

  responding_loggers(method_name).map { |l| l.public_send(method_name, *args, &block) }.first
end
respond_to_missing?(symbol, include_private = false) click to toggle source
Calls superclass method
# File lib/archfiend/logging/multi_logger.rb, line 22
def respond_to_missing?(symbol, include_private = false)
  responding_loggers(method_name).any? || super
end
responding_loggers(method_name) click to toggle source
# File lib/archfiend/logging/multi_logger.rb, line 26
def responding_loggers(method_name)
  @responding_loggers[method_name.to_sym] ||= @loggers.select { |l| l.respond_to?(method_name) }
end