Class: Lorekeeper::MultiLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/lorekeeper/multi_logger.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initializeMultiLogger

Returns a new instance of MultiLogger.



7
8
9
# File 'lib/lorekeeper/multi_logger.rb', line 7

def initialize
  @loggers = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



29
30
31
32
33
34
35
36
# 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

Instance Method Details

#add_logger(logger) ⇒ Object



11
12
13
# File 'lib/lorekeeper/multi_logger.rb', line 11

def add_logger(logger)
  @loggers << logger
end

#inspectObject



15
16
17
# File 'lib/lorekeeper/multi_logger.rb', line 15

def inspect
  "Lorekeeper multilogger, loggers: #{@loggers.map(&:inspect)}"
end

#respond_to?(method) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# 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