Class: SemanticLogger::Formatters::Color
- Defined in:
- lib/semantic_logger/formatters/color.rb
Defined Under Namespace
Classes: ColorMap
Constant Summary
Constants inherited from Base
Instance Attribute Summary collapse
-
#color ⇒ Object
Returns the value of attribute color.
-
#color_map ⇒ Object
Returns the value of attribute color_map.
Attributes inherited from Base
#log, #log_application, #log_environment, #log_host, #logger, #precision, #time_format
Instance Method Summary collapse
- #call(log, logger) ⇒ Object
- #duration ⇒ Object
- #exception ⇒ Object
-
#initialize(ap: {multiline: false}, color_map: ColorMap.new, **args) ⇒ Color
constructor
Adds color to the default log formatter.
- #level ⇒ Object
- #name ⇒ Object
-
#named_tags ⇒ Object
Named Tags.
- #payload ⇒ Object
- #tags ⇒ Object
Methods inherited from Default
#file_name_and_line, #message, #process_info, #thread_name
Methods inherited from Base
build_time_format, #pid, #time
Constructor Details
#initialize(ap: {multiline: false}, color_map: ColorMap.new, **args) ⇒ Color
Adds color to the default log formatter
Example:
# Use a colorized output logger.
SemanticLogger.add_appender(io: $stdout, formatter: :color)
Example:
# Use a colorized output logger changing the color for info to yellow.
SemanticLogger.add_appender(io: $stdout, formatter: {color: {color_map: {info: SemanticLogger::AnsiColors::YELLOW}}})
Example:
# Override the Awesome Print options to output hashes over multiple lines:
SemanticLogger.add_appender(io: $stdout, formatter: {color: {ap: {multiline: true}}})
# Calling the appender added above:
SemanticLogger['Test'].info('hi', {a: 1, b: 2})
=> true
=> 2019-02-12 11:47:50.794339 I [35832:70112015269920] Test -- hi -- {
:a => 1,
:b => 2
}
Parameters:
ap: [Hash]
Any valid Amazing Print option for rendering data.
These can also be changed be creating a `~/.aprc` file.
See: https://github.com/amazing-print/amazing_print
Note: The option :multiline is set to false if not supplied.
Note: Has no effect if Awesome Print is not installed.
color_map: [Hash | SemanticLogger::Formatters::Color::ColorMap]
ColorMaps each of the log levels to a color
77 78 79 80 81 |
# File 'lib/semantic_logger/formatters/color.rb', line 77 def initialize(ap: {multiline: false}, color_map: ColorMap.new, **args) = ap @color_map = color_map.is_a?(ColorMap) ? color_map : ColorMap.new(color_map) super(**args) end |
Instance Attribute Details
#color ⇒ Object
Returns the value of attribute color.
15 16 17 |
# File 'lib/semantic_logger/formatters/color.rb', line 15 def color @color end |
#color_map ⇒ Object
Returns the value of attribute color_map.
15 16 17 |
# File 'lib/semantic_logger/formatters/color.rb', line 15 def color_map @color_map end |
Instance Method Details
#call(log, logger) ⇒ Object
129 130 131 132 |
# File 'lib/semantic_logger/formatters/color.rb', line 129 def call(log, logger) self.color = color_map[log.level] super(log, logger) end |
#duration ⇒ Object
101 102 103 |
# File 'lib/semantic_logger/formatters/color.rb', line 101 def duration "(#{color_map.bold}#{log.duration_human}#{color_map.clear})" if log.duration end |
#exception ⇒ Object
123 124 125 126 127 |
# File 'lib/semantic_logger/formatters/color.rb', line 123 def exception return unless log.exception "-- Exception: #{color}#{log.exception.class}: #{log.exception.message}#{color_map.clear}\n#{log.backtrace_to_s}" end |
#level ⇒ Object
83 84 85 |
# File 'lib/semantic_logger/formatters/color.rb', line 83 def level "#{color}#{super}#{color_map.clear}" end |
#name ⇒ Object
105 106 107 |
# File 'lib/semantic_logger/formatters/color.rb', line 105 def name "#{color}#{super}#{color_map.clear}" end |
#named_tags ⇒ Object
Named Tags
92 93 94 95 96 97 98 99 |
# File 'lib/semantic_logger/formatters/color.rb', line 92 def = log. return if .nil? || .empty? list = [] .each_pair { |name, value| list << "#{color}#{name}: #{value}#{color_map.clear}" } "{#{list.join(', ')}}" end |
#payload ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/semantic_logger/formatters/color.rb', line 109 def payload return unless log.payload? if log.payload.respond_to?(:ai) begin "-- #{log.payload.ai(@ai_options)}" rescue StandardError super end else super end end |
#tags ⇒ Object
87 88 89 |
# File 'lib/semantic_logger/formatters/color.rb', line 87 def "[#{color}#{log.tags.join("#{color_map.clear}] [#{color}")}#{color_map.clear}]" if log. && !log..empty? end |