class Sapience::Formatters::Color
Public Class Methods
new(options = {})
click to toggle source
Parameters:
ap: Any valid AwesomePrint option for rendering data. These options can also be changed be creating a `~/.aprc` file. See: https://github.com/michaeldv/awesome_print Note: The option :multiline is set to false if not supplied. Note: Has no effect if Awesome Print is not installed.
Calls superclass method
Sapience::Formatters::Base::new
# File lib/sapience/formatters/color.rb, line 18 def initialize(options = {}) options = options.dup @ai_options = options.delete(:ap) || { multiline: false } super(options) end
Public Instance Methods
call(log, _logger)
click to toggle source
Adds color to the default log formatter Example:
Sapience.add_appender(:stream, io: $stdout, formatter: :color)
# File lib/sapience/formatters/color.rb, line 27 def call(log, _logger) # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity colors = Sapience::AnsiColors level_color = colors::LEVEL_MAP[log.level] message = time_format.nil? ? "" : "#{format_time(log.time)} " # Header with date, time, log level and process info message += "#{level_color}#{log.level_to_s}#{colors::CLEAR} [#{log.process_info}]" # Tags message += " " + log.tags.collect { |tag| "[#{level_color}#{tag}#{colors::CLEAR}]" }.join(" ") if log.tags && !log.tags.empty? # rubocop:disable LineLength # Duration message += " (#{colors::BOLD}#{log.duration_human}#{colors::CLEAR})" if log.duration # Class / app name message += " #{level_color}#{log.name}#{colors::CLEAR}" # Log message message += " -- #{log.message}" if log.message # Payload: Colorize the payload if the AwesomePrint gem is loaded if log.payload? payload = log.payload message += " -- " message += if defined?(AwesomePrint) && payload.respond_to?(:ai) payload.ai(@ai_options) rescue payload.inspect # rubocop:disable RescueModifier else payload.inspect end end # Exceptions if log.exception message += " -- Exception: #{colors::BOLD}#{log.exception.class}: #{log.exception.message}#{colors::CLEAR}\n" message += log.backtrace_to_s end message end