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