app/aides/multi_logger.rb
class MultiLogger
attr_reader :loggers
def initialize(*args)
@loggers = args
end
def level=(level)
@loggers.each { |logger| logger.level = level }
end
def levels
@loggers.map(&:level)
end
def min_level
levels.min
end
def close
@loggers.map(&:close)
end
def add(level, *args)
@loggers.each { |logger| logger.add(level, *args) }
end
Logger::Severity.constants.each do |level|
define_method(level.downcase) do |*args|
@loggers.each { |logger| logger.send(level.downcase, *args) }
end
define_method("#{ level.downcase }?".to_sym) do
min_level <= Logger::Severity.const_get(level)
end
end
end