app/aides/multi_logger.rb

Summary

Maintainability
A
0 mins
Test Coverage
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