Sha256: afc1fd7b432831a424d1ed92c98fe2d4bbe9a6d42d11a64c290553b108cf63dd

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

require 'logger'
require 'singleton'

module Rezept
  class TermColor
    class << self
      @@color = true

      def color=(color)
        @@color = color
      end

      def green(msg)
        colorize 32, msg
      end

      def yellow(msg)
        colorize 33, msg
      end

      def red(msg)
        colorize 31, msg
      end

      def colorize(num, msg)
        @@color ? "\e[#{num}m#{msg}\e[0m" : msg
      end

    end
  end

  class Logger < Logger
    include Singleton

    def initialize
      super(STDERR)

      self.formatter = proc do |severity, datetime, progname, msg|
        "#{msg}\n"
      end

      self.level = Logger::INFO
    end

    def debug(progname = nil, method_name = nil, msg)
      super(progname) { { method_name: method_name, message: msg } }
    end

    def info(msg)
      super { Rezept::TermColor.green(msg) }
    end

    def warn(msg)
      super { Rezept::TermColor.yellow(msg) }
    end

    def fatal(msg)
      super { Rezept::TermColor.red(msg) }
    end

    def error(msg)
      super { Rezept::TermColor.red(msg) }
    end

    module Helper

      def log(level, message)
        logger = Rezept::Logger.instance
        logger.send(level, message)
      end

      def info(msg)
        log(:info, msg)
      end

      def warn(msg)
        log(:warn, msg)
      end

      def fatal(msg)
        log(:error, msg)
      end

      def debug(msg)
        log(:debug, msg)
      end

      module_function :log, :info, :warn, :fatal, :debug
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rezept-0.4.2 lib/rezept/logger.rb
rezept-0.4.1 lib/rezept/logger.rb