Sha256: 847c5428ecca4c7ac5101e913c9e445f7450da8f3f21ae51222bb46feb6a952d

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

require 'logger'

module UnitF
  module Logging

    DEBUG = ::Logger::Severity::DEBUG
    INFO = ::Logger::Severity::INFO
    WARN = ::Logger::Severity::WARN
    ERROR = ::Logger::Severity::ERROR
    FATAL = ::Logger::Severity::FATAL

    class Logger
      def initialize
        @writers = []
        self.level = ENV['UNITF_LOG_LEVEL'] || INFO
      end

      def add_writer(writer)
        @writers << writer
        writer.level = @level
      end

      def debug(message)
        write(DEBUG, message)
      end

      def info(message)
        write(INFO, message)
      end

      def warn(message)
        write(WARN, message)
      end

      def error(message)
        write(ERROR, message)
      end

      def fatal(message)
        write(FATAL, message)
      end

      def level=(new_level)
        new_level = UnitF::Logging.const_get(new_level.upcase) if new_level.is_a?(String)
        @level = new_level
        @writers.each do |writer|
          writer.level = @level
        end
      rescue ArgumentError, NameError
        self.level = INFO
      end

      def console
        @writers.each do |writer|
          return writer if writer.is_a?(UnitF::Logging::ConsoleWriter)
        end
        nil
      end

      def dump
        @writers.each do |writer|
          puts "Name: #{writer.name} Type: #{writer.class}"
        end
      end

      def write(severity, message)
        @writers.each do |writer|
          writer.log(severity, message)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
unitf-logging-0.1.2 lib/unitf/logging/logger.rb
unitf-logging-0.1.1 lib/unitf/logging/logger.rb