class Rundock::Logger::Formatter

Attributes

buffer[RW]
color[RW]
colored[RW]
date_header[RW]
indent_depth[RW]
short_header[RW]
show_header[RW]
suppress_logging[RW]

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/rundock/logger.rb, line 39
def initialize(*args)
  super
  @indent_depth = 0
  @buffer = []
  @rec = false
  @lock = false
end

Public Instance Methods

add_indent() click to toggle source
# File lib/rundock/logger.rb, line 65
def add_indent
  @indent_depth += 1
end
call(severity, datetime, progname, msg) click to toggle source
# File lib/rundock/logger.rb, line 47
def call(severity, datetime, progname, msg)
  out = formatted_message(severity, datetime, progname, msg)
  @buffer << LogEntity.new(severity, datetime, progname, msg, indent_depth, self) if @rec

  if colored
    colorize(out, severity)
  else
    out
  end
end
flush() click to toggle source
# File lib/rundock/logger.rb, line 81
def flush
  return nil if @lock

  ret = @buffer.dup
  @buffer.clear
  ret
end
formatted_message(severity, datetime, progname, msg) click to toggle source
# File lib/rundock/logger.rb, line 109
def formatted_message(severity, datetime, progname, msg)
  out = if @suppress_logging
        elsif !@show_header
          "%s\n" % [msg2str(msg)]
        elsif !@date_header
          "%5s: %s%s\n" % [
            severity,
            ' ' * 2 * indent_depth,
            msg2str(msg)
          ]
        elsif @short_header
          "%s: %s%s\n" % [severity[0, 1], ' ' * 2 * indent_depth, msg2str(msg)]
        else
          "[%s] %5s: %s%s\n" % [
            datetime.strftime('%Y-%m-%dT%H:%M:%S.%L'),
            severity,
            ' ' * 2 * indent_depth,
            msg2str(msg)
          ]
        end

  out
end
indent() { || ... } click to toggle source
# File lib/rundock/logger.rb, line 58
def indent
  add_indent
  yield
ensure
  reduce_indent
end
new_color(code) { || ... } click to toggle source
# File lib/rundock/logger.rb, line 73
def new_color(code)
  prev_color = @color
  @color = code
  yield
ensure
  @color = prev_color
end
off_rec() click to toggle source
# File lib/rundock/logger.rb, line 93
def off_rec
  @rec = false unless @lock
end
on_rec() click to toggle source
# File lib/rundock/logger.rb, line 89
def on_rec
  @rec = true unless @lock
end
rec_lock() click to toggle source
# File lib/rundock/logger.rb, line 97
def rec_lock
  @lock = true
end
rec_unlock() click to toggle source
# File lib/rundock/logger.rb, line 101
def rec_unlock
  @lock = false
end
reduce_indent() click to toggle source
# File lib/rundock/logger.rb, line 69
def reduce_indent
  @indent_depth -= 1 if @indent_depth > 0
end
simple_output(msg) click to toggle source
# File lib/rundock/logger.rb, line 105
def simple_output(msg)
  puts msg2str(msg)
end

Private Instance Methods

colorize(msg, severity) click to toggle source
# File lib/rundock/logger.rb, line 146
def colorize(msg, severity)
  col = @color ||
        case severity
        when 'INFO'
          :clear
        when 'WARN'
          :yellow
        when 'ERROR'
          :red
        else
          :clear
        end

  ANSI.public_send(col) { msg }
end
msg2str(msg) click to toggle source
# File lib/rundock/logger.rb, line 135
def msg2str(msg)
  case msg
  when ::String
    msg
  when ::Exception
    "#{msg.message} (#{msg.class})\n" << (msg.backtrace || []).join("\n")
  else
    msg.inspect
  end
end