Sha256: db34c215bc8631c0df2e507c6d2cac3035274393248f1d7c5eba7265c7d70020

Contents?: true

Size: 1.26 KB

Versions: 24

Compression:

Stored size: 1.26 KB

Contents

require 'logger'

module Gogetit
  # It was just taken from below source. Thanks to clowder!
  # https://gist.github.com/clowder/3639600
  class MultiLogger
    attr_reader :level

    def initialize(args={})
      @level = args[:level] || Logger::Severity::INFO
      @loggers = []

      Array(args[:loggers]).each { |logger| add_logger(logger) }
    end

    def add_logger(logger)
      logger.level = level
      @loggers << logger
    end

    def level=(level)
      @level = level
      @loggers.each { |logger| logger.level = level }
    end

    def datetime_format=(format)
      @loggers.each { |logger| logger.datetime_format = format }
    end

    def formatter=(format)
      @loggers.each { |logger| logger.formatter = format }
    end

    def progname=(name)
      @loggers.each { |logger| logger.progname = name }
    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
        @level <= Logger::Severity.const_get(level)
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
gogetit-0.12.3 lib/gogetit/multilogger.rb
gogetit-0.12.2 lib/gogetit/multilogger.rb
gogetit-0.12.1 lib/gogetit/multilogger.rb
gogetit-0.12.0 lib/gogetit/multilogger.rb
gogetit-0.11.0 lib/gogetit/multilogger.rb
gogetit-0.10.0 lib/gogetit/multilogger.rb
gogetit-0.9.0 lib/gogetit/multilogger.rb
gogetit-0.8.0 lib/gogetit/multilogger.rb
gogetit-0.7.0 lib/gogetit/multilogger.rb
gogetit-0.6.0 lib/gogetit/multilogger.rb
gogetit-0.5.3 lib/gogetit/multilogger.rb
gogetit-0.5.2 lib/gogetit/multilogger.rb
gogetit-0.5.1 lib/gogetit/multilogger.rb
gogetit-0.5.0 lib/gogetit/multilogger.rb
gogetit-0.4.2 lib/gogetit/multilogger.rb
gogetit-0.4.1 lib/gogetit/multilogger.rb
gogetit-0.4.0 lib/gogetit/multilogger.rb
gogetit-0.3.0 lib/gogetit/multilogger.rb
gogetit-0.2.1 lib/gogetit/multilogger.rb
gogetit-0.2.0 lib/gogetit/multilogger.rb