class LoggerMultiplexor

Log to multiple streams.

The 'logger' module does not provide a logger that can log to multiple streams at once hence this hack. This class bundles multiple loggers so that they can be treated as one.

Example:

>>> logger = LoggerMultiplexor.new(STDOUT, 'development.log')
>>> logger.info('Hello') # Logs 'Hello' to both streams

Public Class Methods

new(*loggers) click to toggle source
# File lib/logger_multiplexor.rb, line 15
def initialize(*loggers)
  @loggers = loggers.map do |stream|
    if stream.is_a?(Logger) || stream.is_a?(LoggerMultiplexor)
      stream
    else
      Logger.new(stream)
    end
  end
end

Public Instance Methods

method_missing(method_name, *args) click to toggle source
# File lib/logger_multiplexor.rb, line 25
def method_missing(method_name, *args)
  @loggers.each { |logger| logger.method(method_name).call(*args) }
end
respond_to_missing?(method_name) click to toggle source
# File lib/logger_multiplexor.rb, line 29
def respond_to_missing?(method_name)
  @loggers.all? { |logger| logger.respond_to_missing?(method_name) }
end