Class: Drydock::Logger

Inherits:
Logger
  • Object
show all
Defined in:
lib/drydock/logger.rb

Instance Method Summary collapse

Instance Method Details

#add(severity, message = nil, progname = nil, &block) ⇒ Object Also known as: log



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/drydock/logger.rb', line 7

def add(severity, message = nil, progname = nil, &block)
  annotation = nil
  indent     = 0

  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = @progname
    end
  end

  if message.respond_to?(:key?)
    indent     = message[:indent].to_i + 1
    annotation = message.fetch(:annotation, '-->')
    if message.key?(:message)
      messages = Array(message[:message])
    elsif message.key?(:messages)
      messages = Array(message[:messages])
    end
  else
    messages = [message]
  end

  annotation << " " if annotation
  indentation = '    ' * indent

  messages.each do |m|
    m.to_s.split(/\n/).each do |line|
      if annotation
        super(severity, "#{indentation}#{annotation} #{line}", progname)
      else
        super(severity, line, progname)
      end
    end
  end
end