Sha256: 7a665525ae2689c56176741a89db3713ffe9f0f4b44ce9d25afc54f8b56fb26c

Contents?: true

Size: 1005 Bytes

Versions: 2

Compression:

Stored size: 1005 Bytes

Contents

module Paraduct
  class ColoredLabelLogger < ::Logger
    def initialize(label_name, logdev = STDOUT)
      super(logdev)
      color = Paraduct::ColoredLabelLogger.next_color
      @label = "[#{label_name.to_s.colorize(color)}]"
      @formatter = ActiveSupport::Logger::SimpleFormatter.new
    end

    [:debug, :info, :warn, :error, :fatal].each do |severity|
      define_method "#{severity}_with_label" do |message|
        message.each_line do |line|
          send "#{severity}_without_label", "#{@label} #{line.strip}" unless line.blank?
        end
      end
      alias_method_chain severity, :label
    end

    COLORS = [
      :cyan,
      :yellow,
      :green,
      :magenta,
      :red,
      :blue,
      :light,
      :cyan,
      :light_yellow,
      :light_green,
      :light_magenta,
      :light_red,
      :light_blue,
    ]
    def self.next_color
      @@color_index ||= -1
      @@color_index = (@@color_index + 1) % COLORS.length
      COLORS[@@color_index]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
paraduct-0.0.1.beta13 lib/paraduct/colored_label_logger.rb
paraduct-0.0.1.beta12 lib/paraduct/colored_label_logger.rb