Sha256: cf5ad91d2a2d0c2faf35f21a9b62c47b0b9878e29b32cadb7ea8bbc7abb97772

Contents?: true

Size: 1.6 KB

Versions: 27

Compression:

Stored size: 1.6 KB

Contents

require 'awesome_print' # for colored tty logging

class PEdump
  class Logger < ::Logger
    def initialize *args
      super
      @formatter = proc do |severity,_,_,msg|
        # quick and dirty way to remove duplicate messages
        if @prevmsg == msg && severity != 'DEBUG' && severity != 'INFO'
          ''
        else
          @prevmsg = msg
          "#{msg}\n"
        end
      end
      @level = WARN
    end
  end

  def Logger.create params
    logger =
      if params[:logger]
        params[:logger]
      else
        logdev = params[:logdev] || STDERR
        logger_class =
          if params.key?(:color)
            # forced color or not
            params[:color] ? ColoredLogger : Logger
          else
            # set color if logdev is TTY
            (logdev.respond_to?(:tty?) && logdev.tty?) ? ColoredLogger : Logger
          end
        logger_class.new(logdev)
      end

    logger.level = params[:log_level] if params[:log_level]
    logger
  end

  class ColoredLogger < ::Logger
    def initialize *args
      super
      @formatter = proc do |severity,_,_,msg|
        # quick and dirty way to remove duplicate messages
        if @prevmsg == msg && severity != 'DEBUG' && severity != 'INFO'
          ''
        else
          @prevmsg = msg
          color =
            case severity
            when 'FATAL'
              :redish
            when 'ERROR'
              :red
            when 'WARN'
              :yellowish
            when 'DEBUG'
              :gray
            end
          "#{color ? msg.send(color) : msg}\n"
        end
      end
      @level = WARN
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
pedump-0.6.9 lib/pedump/logger.rb
pedump-0.6.7 lib/pedump/logger.rb
pedump-0.6.6 lib/pedump/logger.rb
pedump-0.6.5 lib/pedump/logger.rb
pedump-0.6.4 lib/pedump/logger.rb
pedump-0.6.3 lib/pedump/logger.rb
pedump-0.6.2 lib/pedump/logger.rb
pedump-0.6.1 lib/pedump/logger.rb
pedump-0.6.0 lib/pedump/logger.rb
pedump-0.5.4 lib/pedump/logger.rb
pedump-0.5.3 lib/pedump/logger.rb
pedump-0.5.2 lib/pedump/logger.rb
pedump-0.5.1 lib/pedump/logger.rb
pedump-0.5.0 lib/pedump/logger.rb
pedump-0.4.16 lib/pedump/logger.rb
pedump-0.4.15 lib/pedump/logger.rb
pedump-0.4.14 lib/pedump/logger.rb
pedump-0.4.13 lib/pedump/logger.rb
pedump-0.4.12 lib/pedump/logger.rb
pedump-0.4.11 lib/pedump/logger.rb