Sha256: 4e0929340df2ada73107a8d24e4bacd1938fa14e2a9ed17bfb79257242d21679

Contents?: true

Size: 1002 Bytes

Versions: 3

Compression:

Stored size: 1002 Bytes

Contents

module Paraduct
  class ColoredLabelLogger < ::Logger
    def initialize(label_name, logdev = STDOUT)
      super(logdev)
      color = Paraduct::ColoredLabelLogger.next_color
      @formatter = Formatter.new(label_name, color)
    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

    class Formatter
      def initialize(label_name, color)
        @label = "[#{label_name.to_s.colorize(color)}]"
      end

      def call(severity, datetime, progname, message)
        return "" if message.blank?

        content = ""
        message.each_line do |line|
          content << "#{datetime} #{@label} #{line.strip}\n"
        end
        content
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
paraduct-1.0.0.beta6 lib/paraduct/colored_label_logger.rb
paraduct-1.0.0.beta5 lib/paraduct/colored_label_logger.rb
paraduct-1.0.0.beta4 lib/paraduct/colored_label_logger.rb