class Lorekeeper::MultiLogger

Allows to create a logger that will pass information to any logger registered It is useful so send the same message through different loggers to different sinks

Public Class Methods

new() click to toggle source
# File lib/lorekeeper/multi_logger.rb, line 7
def initialize
  @loggers = []
end

Public Instance Methods

add_logger(logger) click to toggle source
# File lib/lorekeeper/multi_logger.rb, line 11
def add_logger(logger)
  @loggers << logger
end
inspect() click to toggle source
# File lib/lorekeeper/multi_logger.rb, line 15
def inspect
  "Lorekeeper multilogger, loggers: #{@loggers.map(&:inspect)}"
end
method_missing(method, *args, &block) click to toggle source
# File lib/lorekeeper/multi_logger.rb, line 29
def method_missing(method, *args, &block)
  result = @loggers.map do |logger|
    logger.public_send(method, *args, &block) if logger.respond_to?(method)
  end
  # We call all the methods, delete nils and duplicates.
  # Then hope for the best taking the first value
  result.compact.uniq.first
end
respond_to?(method, all_included = false) click to toggle source
# File lib/lorekeeper/multi_logger.rb, line 20
def respond_to?(method, all_included = false)
  @loggers.all? { |logger| logger.respond_to?(method, all_included) }
end