Sha256: 7c34cfbc88f5b395189d8f812f5e00ba75ce897d13453a51925b3967fbdb51da

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

# encoding: utf-8

begin
  require "term/ansicolor"
rescue LoadError
  raise LoadError, "You have to install term-ansicolor gem!"
end

require_relative "plain"

module SimpleLogger
  class Logger < Plain
    @@colors = {
      fatal:  "red.bold",
      error:  "red",
      warn:   "yellow",
      info:   "green",
      debug:  "cyan",
      custom: "magenta"
    }

    # Generate the logging methods for SimpleLogger.logger for each log level.
    self::Levels.each_pair do |name, number|
      color = @@colors[name]
      class_eval <<-RUBY, __FILE__, __LINE__

      # Appends a message to the log if the log level is at least as high as
      # the log level of the logger.
      #
      # ==== Parameters
      # string<String>:: The message to be logged. Defaults to nil.
      #
      # ==== Returns
      # self:: The logger object for chaining.
      def #{name}(message = nil)
        self << message.extend(Term::ANSIColor).#{color}
        self
      end

      # Appends a message to the log if the log level is at least as high as
      # the log level of the logger. The bang! version of the method also auto
      # flushes the log buffer to disk.
      #
      # ==== Parameters
      # string<String>:: The message to be logged. Defaults to nil.
      #
      # ==== Returns
      # self:: The logger object for chaining.
      def #{name}!(message = nil)
        self << message.extend(Term::ANSIColor).#{color}
        flush if #{number} >= level
        self
      end

      # ==== Returns
      # Boolean:: True if this level will be logged by this logger.
      def #{name}?
        #{number} >= level
      end
      RUBY
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simple-logger-0.0.2 lib/simple-logger/logger.rb