Sha256: 990b96eccb6afbc7ee9b8f9701d2796ae852289d91087a1fe2fd741dfd1e6cd1

Contents?: true

Size: 1.4 KB

Versions: 12

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

module Discorb
  # @!visibility private
  class Logger
    attr_accessor :out, :colorize_log

    @levels = %i[debug info warn error fatal].freeze

    def initialize(out, colorize_log, level)
      @out = out
      @level = self.class.levels.index(level)
      @colorize_log = colorize_log
    end

    def level
      self.class.levels[@level]
    end

    def level=(level)
      @level = self.class.levels.index(level)
      raise ArgumentError, "Invalid log level: #{level}" unless @level
    end

    def debug(message)
      return unless @level <= 0

      write_output("DEBUG", "\e[90m", message)
    end

    def info(message)
      return unless @level <= 1

      write_output("INFO", "\e[94m", message)
    end

    def warn(message)
      return unless @level <= 2

      write_output("WARN", "\e[93m", message)
    end

    def error(message)
      return unless @level <= 3

      write_output("ERROR", "\e[31m", message)
    end

    def fatal(message)
      return unless @level <= 4

      write_output("FATAL", "\e[91m", message)
    end

    class << self
      attr_reader :levels
    end

    private

    def write_output(name, color, message)
      return unless @out

      if @colorize_log
        @out.puts("\e[2;90m[#{Time.now.iso8601}] #{color}#{name}\e[m -- #{message}")
      else
        @out.puts("[#{Time.now.iso8601}] #{name} -- #{message}")
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
discorb-0.6.1 lib/discorb/log.rb
discorb-0.6.0 lib/discorb/log.rb
discorb-0.5.6 lib/discorb/log.rb
discorb-0.5.5 lib/discorb/log.rb
discorb-0.5.4 lib/discorb/log.rb
discorb-0.5.3 lib/discorb/log.rb
discorb-0.5.2 lib/discorb/log.rb
discorb-0.5.1 lib/discorb/log.rb
discorb-0.5.0 lib/discorb/log.rb
discorb-0.4.2 lib/discorb/log.rb
discorb-0.4.1 lib/discorb/log.rb
discorb-0.4.0 lib/discorb/log.rb