class GreenLog::SimpleWriter

A simple log formatter, aimed at humans.

Attributes

dest[R]

Public Class Methods

new(dest) click to toggle source
# File lib/green_log/simple_writer.rb, line 11
def initialize(dest)
  @dest = dest
end

Public Instance Methods

<<(entry) click to toggle source
# File lib/green_log/simple_writer.rb, line 17
def <<(entry)
  raise ArgumentError, "GreenLog::Entry expected" unless entry.is_a?(GreenLog::Entry)

  output = [
    format_part(entry, :severity),
    format_part(entry, :context),
    "--",
    format_part(entry, :message),
    format_part(entry, :data),
  ].compact.join(" ") + "\n"

  output << format_exception(entry.exception)

  dest << output
end

Protected Instance Methods

format_context(data)
Alias for: format_data
format_data(data) click to toggle source
# File lib/green_log/simple_writer.rb, line 46
def format_data(data)
  return nil if data.empty?

  "[" + each_part_of(data).to_a.join(" ") + "]"
end
Also aliased as: format_context
format_exception(exception) click to toggle source
# File lib/green_log/simple_writer.rb, line 58
def format_exception(exception)
  return "" if exception.nil?

  result = "  ! #{exception.class.name}: #{exception.message}\n"
  exception.backtrace.each do |line|
    result += "    #{line}\n"
  end
  result
end
format_message(message) click to toggle source
# File lib/green_log/simple_writer.rb, line 54
def format_message(message)
  message
end
format_part(entry, part) click to toggle source
# File lib/green_log/simple_writer.rb, line 35
def format_part(entry, part)
  value = entry.public_send(part)
  return nil if value.nil?

  send("format_#{part}", value)
end
format_severity(severity) click to toggle source
# File lib/green_log/simple_writer.rb, line 42
def format_severity(severity)
  Severity.name(severity)[0].upcase
end

Private Instance Methods

each_part_of(data, prefix = nil) { |"#{label}=#{inspect}"| ... } click to toggle source
# File lib/green_log/simple_writer.rb, line 70
def each_part_of(data, prefix = nil, &block)
  return enum_for(:each_part_of, data, prefix) unless block_given?

  data.each do |k, v|
    label = [prefix, k].compact.join(".")
    if v.is_a?(Hash)
      each_part_of(v, label, &block)
    else
      yield "#{label}=#{v.inspect}"
    end
  end
end