Sha256: f033c53f6a4e517dd70203aab82c18192e8a72e19142e1f725dd4a73630a2487

Contents?: true

Size: 1.6 KB

Versions: 11

Compression:

Stored size: 1.6 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, fallback: nil)
      return unless @level <= 0

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

    def info(message, fallback: nil)
      return unless @level <= 1

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

    def warn(message, fallback: nil)
      return unless @level <= 2

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

    def error(message, fallback: nil)
      return unless @level <= 3

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

    def fatal(message, fallback: nil)
      return unless @level <= 4

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

    class << self
      attr_reader :levels
    end

    private

    def write_output(name, color, message, fallback)
      unless @out
        fallback.puts(message) if fallback

        return
      end

      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

11 entries across 11 versions & 1 rubygems

Version Path
discorb-0.9.3 lib/discorb/log.rb
discorb-0.9.1 lib/discorb/log.rb
discorb-0.9.0 lib/discorb/log.rb
discorb-0.8.2 lib/discorb/log.rb
discorb-0.8.1 lib/discorb/log.rb
discorb-0.8.0 lib/discorb/log.rb
discorb-0.7.6 lib/discorb/log.rb
discorb-0.7.3 lib/discorb/log.rb
discorb-0.7.2 lib/discorb/log.rb
discorb-0.7.1 lib/discorb/log.rb
discorb-0.7.0 lib/discorb/log.rb