class SemanticLogger::Log

def extract_arguments(payload, message = nil)

Extract the arguments from a Hash Payload
def extract_arguments(payload, message = nil)
  raise(ArgumentError, "payload must be a Hash") unless payload.is_a?(Hash)
  message = nil if message == ""
  if payload.key?(:payload)
    return message ? payload.merge(message: message) : payload
  end
  new_payload = {}
  args        = {}
  payload.each_pair do |key, value|
    # Supplied message takes precedence
    if (key == :message) && !message.nil?
      new_payload[key] = value
      next
    end
    NON_PAYLOAD_KEYS.include?(key) ? args[key] = value : new_payload[key] = value
  end
  args[:payload] = new_payload unless new_payload.empty?
  args[:message] = message if message
  args
end