diff --git a/lib/formatters/ansi_formatter.rb b/lib/formatters/ansi_formatter.rb index 26ee7d9..6ef818a 100644 --- a/lib/formatters/ansi_formatter.rb +++ b/lib/formatters/ansi_formatter.rb @@ -17,6 +17,7 @@ class AnsiFormatter < SemanticLogger::Formatters::Color CHAR_FATAL = '⯶'.freeze TERMINUS_STRING = '╙─╜'.freeze RENDERED_VIEW_DURATION = 100 + TOTAL_RENDERED_VIEW_DURATION = RENDERED_VIEW_DURATION * 5 def initialize super(color_map: @@ -71,15 +72,22 @@ class AnsiFormatter < SemanticLogger::Formatters::Color log.dimensions = AnsiDimensions.new(rails:, before:) @memory = nil log.message = two_captures_last_as_bold(log.message, /(^Started \w* )"(.*?)"/) - elsif log.message.starts_with?('Completed 2') - log.dimensions = AnsiDimensions.new(rails: TERMINUS_STRING, after: 1) - elsif log.message.starts_with?('Completed 3') - @memory = '║' - log.dimensions = AnsiDimensions.new(rails: "╙#{@memory}╜") - elsif log.message.starts_with?('Completed 4') - log.dimensions = AnsiDimensions.new(rails: '╙╨╜') - elsif log.message.starts_with?('Completed 5') - log.dimensions = AnsiDimensions.new(rails: "╙#{draw_fatal}╜") + elsif log.message.starts_with?('Completed') + m1, m2, m3, m4 = log.message.match(/^Completed (\d+) (.*) in (\d+\.?\d*)ms (.*)$/).captures + http_code = m1.to_i + duration = m3.to_f + duration = duration > TOTAL_RENDERED_VIEW_DURATION ? " in #{m3}ms #{m4}" : '' + log.message = "Completed #{BOLD}#{http_code}#{CLEAR} #{m2}#{duration}" + if http_code / 100 == 2 + log.dimensions = AnsiDimensions.new(rails: TERMINUS_STRING, after: 1) + elsif http_code / 100 == 3 + @memory = '║' + log.dimensions = AnsiDimensions.new(rails: "╙#{@memory}╜") + elsif http_code / 100 == 4 + log.dimensions = AnsiDimensions.new(rails: '╙╨╜') + elsif http_code / 100 == 5 + log.dimensions = AnsiDimensions.new(rails: "╙#{draw_fatal}╜") + end elsif log.message =~ /^(Processing|Parameters)/ log.level = :debug if log.message =~ /^Processing/