class Vagrant::Util::HCLogFormatter

Constants

MAX_MESSAGE_LENGTH

Public Instance Methods

format(event) click to toggle source
# File lib/vagrant/util/logging_formatter.rb, line 30
def format(event)
  message = format_object(event.data).
    force_encoding('UTF-8').
    scrub("?")
  if message.length > MAX_MESSAGE_LENGTH
    message = Array.new.tap { |a|
      until message.empty?
        a << "continued..." unless a.empty?
        a << message.slice!(0, MAX_MESSAGE_LENGTH)
      end
    }
  else
    message = [message]
  end

  message.map do |msg|
    d = {
      "@timestamp" => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%6N%:z"),
      "@level" => Log4r::LNAMES[event.level].downcase,
      "@module" => event.fullname.gsub("::", "."),
      "@message" => msg,
    }
    d["@caller"] = event.tracer[0] if event.tracer
    d.to_json + "\n"
  end
end