class Streamlog::LogColorize

Constants

REXP_COMPLETE
REXP_CONTROLLER
REXP_RENDER
REXP_RENDER_WITHIN
REXP_REQUEST
REXP_SQL_QUERY

Public Instance Methods

colorize_line(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 10
def colorize_line(line)
  line = strip_ansi_colors(line)
  line = colorize(line)
rescue => e
  puts "Could not colorize: #{e.message}"
  line
end

Private Instance Methods

colorize(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 24
def colorize(line)
  case line
    when REXP_REQUEST       then colorize_request(line)
    when REXP_CONTROLLER    then colorize_controller(line)
    when REXP_RENDER        then colorize_render(line)
    when REXP_RENDER_WITHIN then colorize_render_within(line)
    when REXP_COMPLETE      then colorize_complete(line)
    when REXP_SQL_QUERY     then colorize_sql_query(line)
    else line
  end
end
colorize_complete(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 86
def colorize_complete(line)
  data = regex_parse(line.match(REXP_COMPLETE))
  status = span(data[:status], data[:status] =~ /^2/ ? 'log-status success' : 'log-status failure')
  total_time = span(data[:total_time], 'log-total-time')
  "Completed #{status} in #{total_time} #{data[:last_bit]}"
end
colorize_controller(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 53
def colorize_controller(line)
  data = regex_parse(line.match(REXP_CONTROLLER))
  controller = span(data[:controller], 'log-controller')
  action = span(data[:action], 'log-action')
  format = span(data[:format], 'log-format')
  "Processing by #{controller}##{action} as #{format}"
end
colorize_render(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 61
def colorize_render(line)
  data = regex_parse(line.match(REXP_RENDER))
  path = data[:path]
  template_name = span(data[:template_name], 'log-template-name')
  rendering_time = span(data[:rendering_time], 'log-rendering-time')
  "#{space}Rendered #{path}#{template_name} (#{rendering_time})"
end
colorize_render_within(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 69
def colorize_render_within(line)
  data = regex_parse(line.match(REXP_RENDER_WITHIN))
  path = data[:path]
  layout_name = span(data[:layout_name], 'log-layout-name')
  template_name = span(data[:template_name], 'log-template-name')
  rendering_time = span(data[:rendering_time], 'log-rendering-time')
  "#{space}Rendered #{path}#{template_name} within #{layout_name} (#{rendering_time})"
end
colorize_request(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 44
def colorize_request(line)
  data = regex_parse(line.match(REXP_REQUEST))
  method = span(data[:method], 'log-method')
  path = span(data[:path], 'log-path')
  ip = span(data[:ip], 'log-ip')
  date = span(data[:date], 'log-date')
  "Started #{method} \"#{path}\" for #{ip} at #{date}"
end
colorize_sql_query(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 78
def colorize_sql_query(line)
  data = regex_parse(line.match(REXP_SQL_QUERY))
  model_load = span(data[:model_load], 'log-model-load')
  rendering_time = span(data[:rendering_time], 'log-rendering-time')
  sql_query = data[:sql_query]
  "#{space}#{model_load} (#{rendering_time}) #{sql_query}"
end
regex_parse(match) click to toggle source
# File lib/streamlog/log_colorize.rb, line 93
def regex_parse(match)
  Hash[match.names.collect { |k| k.to_sym }.zip(match.captures)]
end
space() click to toggle source
# File lib/streamlog/log_colorize.rb, line 40
def space
  '  '
end
span(item, classname) click to toggle source
# File lib/streamlog/log_colorize.rb, line 36
def span(item, classname)
  "<span class='#{classname}'>#{item}</span>"
end
strip_ansi_colors(line) click to toggle source
# File lib/streamlog/log_colorize.rb, line 20
def strip_ansi_colors(line)
  line.gsub(/\e\[(\d+)m/, '')
end