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