|
|
@ -15,6 +15,8 @@ class AnsiFormatter < SemanticLogger::Formatters::Color |
|
|
|
ANSI_ERROR = CLEAR + BG_RED + TEXT_WHITE |
|
|
|
ANSI_FATAL = CLEAR + BG_MAGENTA + BOLD + TEXT_WHITE |
|
|
|
NAME_MAX_SIZE = 20 |
|
|
|
FOREMAN_PREFIX_LENGTH = 18 |
|
|
|
DEFAULT_UNDETECTED_WRAP = 80 |
|
|
|
|
|
|
|
def initialize |
|
|
|
super(color_map: ColorMap.new( |
|
|
@ -30,7 +32,8 @@ class AnsiFormatter < SemanticLogger::Formatters::Color |
|
|
|
self.log = log |
|
|
|
self.logger = logger |
|
|
|
self.color = color_map[log.level] |
|
|
|
wrap_level(level, message, payload, exception) |
|
|
|
wrap_length = compute_useful_length |
|
|
|
wrap_level(level, wrap_length, message, payload, exception) |
|
|
|
end |
|
|
|
|
|
|
|
def origin |
|
|
@ -56,6 +59,12 @@ class AnsiFormatter < SemanticLogger::Formatters::Color |
|
|
|
|
|
|
|
private |
|
|
|
|
|
|
|
def compute_useful_length |
|
|
|
IO.console.winsize[1] - FOREMAN_PREFIX_LENGTH |
|
|
|
rescue StandardError |
|
|
|
DEFAULT_UNDETECTED_WRAP |
|
|
|
end |
|
|
|
|
|
|
|
def clean_backtrace(backtrace) |
|
|
|
root_path = Rails.root.to_s |
|
|
|
backtrace = backtrace.select { |line| line.starts_with?(root_path) } |
|
|
@ -67,11 +76,11 @@ class AnsiFormatter < SemanticLogger::Formatters::Color |
|
|
|
"#{tint}#{text}#{AnsiColors::CLEAR}" |
|
|
|
end |
|
|
|
|
|
|
|
def wrap_level(level, *items) |
|
|
|
def wrap_level(level, length, *items) |
|
|
|
prefix = "#{origin} #{colorize('>')} " |
|
|
|
continuation = "#{origin} #{colorize('#')} " |
|
|
|
items.map do |item| |
|
|
|
AnsiWrapper.wrap(item, 100, prefix, continuation) |
|
|
|
AnsiWrapper.wrap(item, length, prefix, continuation) |
|
|
|
end.compact.join("\n") # FIXME: previously was: join(' ') |
|
|
|
end |
|
|
|
end |