Sha256: 41384be7ab6c300c6a03b77d7049816655fc066279269ae9ed959a0b7fc88341

Contents?: true

Size: 972 Bytes

Versions: 8

Compression:

Stored size: 972 Bytes

Contents

require 'active_support/log_subscriber'

class StructuredEventLogger::HumanReadableLogger

  CLEAR   = "\e[0m"
  BOLD    = "\e[1m"

  # Colors
  MAGENTA = "\e[35m"
  CYAN    = "\e[36m"
  WHITE   = "\e[37m"
   
  attr_accessor :logger, :colorize, :log_level

  def initialize(logger, colorize = ActiveSupport::LogSubscriber.colorize_logging, log_level = nil)
    @logger, @colorize, @log_level = logger, colorize, log_level
  end


  def call(scope, event, hash, decorated_hash)
    logger.add(log_level, format_hash(scope, event, hash))
  end

  private

  def format_hash(scope, event, hash, separator = ', ')
    @odd = !@odd
    message = hash.map {|k, v| "#{k}=#{escape(v)}"}.join(separator)
    if @colorize
      "  #{@odd ? CYAN : MAGENTA}#{BOLD}[#{scope}] #{event}: #{WHITE}#{message}#{CLEAR}"
    else
      "  [#{scope}] #{event}: #{message}"
    end
  end

  def escape(value)
    output = value.to_s
    output =~ /[\s"\\]/ ? output.inspect : output
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
structured-event-logger-0.1.5 lib/structured_event_logger/human_readable_logger.rb
structured-event-logger-0.1.4 lib/structured_event_logger/human_readable_logger.rb
structured-event-logger-0.1.3 lib/structured_event_logger/human_readable_logger.rb
structured-event-logger-0.1.2 lib/structured_event_logger/human_readable_logger.rb
structured-event-logger-0.1.1 lib/structured_event_logger/human_readable_logger.rb
structured-event-logger-0.1.0 lib/structured_event_logger/human_readable_logger.rb
structured-event-logger-0.0.6 lib/structured_event_logger/human_readable_logger.rb
structured-event-logger-0.0.5 lib/structured_event_logger/human_readable_logger.rb