Class: Mirah::Logging::LogFormatter

Inherits:
Formatter
  • Object
show all
Defined in:
lib/mirah/util/logging.rb

Instance Method Summary collapse

Constructor Details

#initialize(use_color = true) ⇒ LogFormatter

Returns a new instance of LogFormatter.



15
16
17
18
19
# File 'lib/mirah/util/logging.rb', line 15

def initialize(use_color=true)
  @color = use_color
  @names = {}
  @inverse_names = {}
end

Instance Method Details

#format(record) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/mirah/util/logging.rb', line 55

def format(record)
  sb = java.lang.StringBuilder.new
  format_name(sb, record.level.int_value, record.logger_name)
  sb.append(formatMessage(record))
  sb.append("\n")
  if record.thrown
    sw = java.io.StringWriter.new
    pw = java.io.PrintWriter.new(sw)
    record.thrown.printStackTrace(pw)
    pw.close
    sb.append(sw.toString)
  end
  sb.toString
end

#format_name(sb, level, name) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/mirah/util/logging.rb', line 21

def format_name(sb, level, name)
  sb.append("\e[1m") if @color
  sb.append("* [")
  if @color && level > 800
    if level > 900
      sb.append("\e[31m")
    else
      sb.append("\e[34m")
    end
  end
  sb.append(shorten(name))
  sb.append("\e[39m") if @color
  sb.append('] ')
  sb.append("\e[0m") if @color
end

#shorten(name) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/mirah/util/logging.rb', line 37

def shorten(name)
  short = @names[name]
  return short if short
  pieces = name.split('.')
  pieces.size.times do |i|
    key = pieces[-i - 1, i + 1]
    existing = @inverse_names[key]
    if existing.nil? || existing == [name]
      @inverse_names[key] = [name]
      return @names[name] = key.join('.')
    else
      existing.each {|i| @names[i] = nil}
      existing << name unless existing.include?(name)
    end
  end
  return name
end