class Huyegger::Formatter

Constants

SEVERITY_STR

Attributes

original_formatter[R]

Public Class Methods

new(original_formatter) click to toggle source
# File lib/huyegger/formatter.rb, line 18
def initialize(original_formatter)
  @original_formatter = original_formatter
end

Public Instance Methods

call(severity, timestamp, progname, msg) click to toggle source

This method is invoked when a log event occurs

# File lib/huyegger/formatter.rb, line 31
def call(severity, timestamp, progname, msg)
  msg = original_formatter.call(severity, timestamp, progname, msg) if original_formatter && String === msg
  json_message = {}

  add_severity!(json_message, severity)
  json_message.merge!(Huyegger.stringify_keys(__context__))
  add_message!(json_message, msg)
  add_timestamp(json_message)

  "#{Huyegger.json_encoder.call(json_message)}\n"
end
clear_context!() click to toggle source
# File lib/huyegger/formatter.rb, line 22
def clear_context!
  __context__.clear
end
context(context) click to toggle source
# File lib/huyegger/formatter.rb, line 26
def context(context)
  __context__.merge!(context) unless context.nil?
end

Private Instance Methods

__context__() click to toggle source
# File lib/huyegger/formatter.rb, line 72
def __context__
  # Use object_id to avoid conflicts with other instances
  Thread.current[:"__huyegger_context__#{object_id}"] ||= {}
end
add_message!(json_message, msg) click to toggle source
# File lib/huyegger/formatter.rb, line 56
def add_message!(json_message, msg)
  case msg
  when String
    json_message.merge!("message" => msg)
  when Hash
    json_message.merge!("message" => "Empty message") # default message because it is required
    json_message.merge!(Huyegger.stringify_keys(msg))
  else
    json_message.merge!("message" => msg.inspect)
  end
end
add_severity!(json_message, severity) click to toggle source
# File lib/huyegger/formatter.rb, line 45
def add_severity!(json_message, severity)
  case severity
  when String
    json_message.merge!("level" => severity)
  when Integer
    json_message.merge!("level" => SEVERITY_STR.fetch(severity))
  else
    json_message.merge!("level" => SEVERITY_STR.fetch(::Logger::UNKNOWN))
  end
end
add_timestamp(json_message) click to toggle source
# File lib/huyegger/formatter.rb, line 68
def add_timestamp(json_message)
  json_message['timestamp'] ||= Time.now.xmlschema
end