grissius/vump

View on GitHub
lib/vump/logger/logger.rb

Summary

Maintainability
A
25 mins
Test Coverage
require 'logger'
require 'forwardable'

module Vump
  class Logger
    extend Forwardable
    def_delegators :@logger, :level=

    def initialize(options = {})
      @logger = ::Logger.new(options[:out] || STDOUT)
      @logger.level = ::Logger::INFO
      @logger.level = ::Logger::DEBUG if options[:verbose]
      @logger.level = ::Logger::UNKNOWN if options[:silent]
      @logger.formatter = proc do |_severity, _datetime, progname, msg|
        progname ? "[#{progname}] #{msg}\n" : "#{msg}\n"
      end
    end

    def info(message, module_name = nil)
      @logger.add(::Logger::INFO, message, module_name)
    end

    def debug(message, module_name = nil)
      @logger.add(::Logger::DEBUG, message, module_name)
    end

    def warn(message, module_name = nil)
      @logger.add(::Logger::WARN, message, module_name)
    end

    def error(message, module_name = nil)
      @logger.add(::Logger::ERROR, message.red, module_name)
    end
  end
end