Class: Madvertise::Logging::MultiLogger

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

Overview

MultiLogger is a simple class for multiplexing ImprovedLogger objects. It support attach/detach to send messages to any number of loggers.

Instance Method Summary collapse

Constructor Details

#initialize(*loggers) ⇒ MultiLogger

Returns a new instance of MultiLogger.



9
10
11
# File 'lib/madvertise/logging/multi_logger.rb', line 9

def initialize(*loggers)
  @loggers = loggers
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

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

Delegate all method calls to all attached loggers.



27
28
29
30
31
# File 'lib/madvertise/logging/multi_logger.rb', line 27

def method_missing(name, *args, &block)
  @loggers.map do |logger|
    logger.send(name, *args, &block)
  end.first
end

Instance Method Details

#attach(logger) ⇒ Object

Attach an ImprovedLogger object.



14
15
16
17
# File 'lib/madvertise/logging/multi_logger.rb', line 14

def attach(logger)
  logger.token = @loggers.first.token rescue nil
  @loggers << logger
end

#detach(logger) ⇒ Object

Detach an ImprovedLogger object.



20
21
22
# File 'lib/madvertise/logging/multi_logger.rb', line 20

def detach(logger)
  @loggers.delete(logger)
end