diff --git a/config/environments/development.rb b/config/environments/development.rb index ef755a2..a2997a3 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -1,6 +1,5 @@ require 'active_support/core_ext/integer/time' require_relative '../../lib/formatter/colored_formatter' -Rainbow.enabled = true Rails.application.configure do # rubocop:disable Metrics/BlockLength # Settings specified here will take precedence over those in config/application.rb. @@ -79,3 +78,5 @@ Rails.application.configure do # rubocop:disable Metrics/BlockLength # Colorful Simple Logger Formatter config.log_formatter = ColoredFormatter.new end + +Rainbow.enabled = true diff --git a/lib/formatter/colored_formatter.rb b/lib/formatter/colored_formatter.rb index 8e99a61..6b594c7 100644 --- a/lib/formatter/colored_formatter.rb +++ b/lib/formatter/colored_formatter.rb @@ -2,19 +2,22 @@ require 'rainbow' # ColoredFormatter outputs colored message according to severity class ColoredFormatter < Logger::Formatter - def call(severity, _time, _program_name, message) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength - full_message = message.is_a?(String) ? message : message.inspect - case severity - when 'DEBUG' - "#{Rainbow(severity).gray.bright.underline.bg(:yellow)} - #{Rainbow(full_message).gray}\n" - when 'INFO' - "#{Rainbow(severity).green.bright.underline.bg(:yellow)} - #{Rainbow(full_message).green}\n" - when 'WARN' - "#{Rainbow(severity).orange.bright.underline} - #{Rainbow(full_message).orange}\n" - when 'ERROR' - "#{Rainbow(severity).red.bright.underline} - #{Rainbow(full_message).red}\n" - else - "unknown severity #{severity}\n" - end + def call(severity, _time, _program_name, message) # rubocop:disable Metrics/MethodLength + tint = case severity + when 'DEBUG' + :darkgray + when 'INFO' + :white + when 'WARN' + # :orange + '#FFC482' + when 'ERROR' + :red + when 'FATAL' + :magenta + else + raise "unknown severity #{severity}" + end + "#{Rainbow('╞' + severity.ljust(5) + '╡').bg(:cyan).color(:darkgray)}╠ #{Rainbow(message).color(tint)}\n" end end