module AWS::Core::ClientLogging

@private

Public Instance Methods

log_client_request(name, options) { || ... } click to toggle source
# File lib/aws/core/client_logging.rb, line 22
def log_client_request(name, options)
  response = nil
  time = Benchmark.measure do
    response = yield
  end
  
  if config.logger
    if options[:async]
      response.on_complete do
        log_client_request_on_success(name, options, response, time)
      end
    else
      log_client_request_on_success(name, options, response, time)
    end
  end
  response
end
sanitize_options(options) click to toggle source

Summarizes long strings and adds file size information @private

# File lib/aws/core/client_logging.rb, line 42
def sanitize_options(options)
  sanitize_hash(options)
end

Protected Instance Methods

log(severity, message) click to toggle source
# File lib/aws/core/client_logging.rb, line 47
def log severity, message
  config.logger.send(severity, message + "\n") if config.logger
end
log_client_request_on_success(method_name, options, response, time) click to toggle source
# File lib/aws/core/client_logging.rb, line 52
def log_client_request_on_success(method_name, options, response, time)
  status = response.http_response.status
  service = self.class.service_name
  
  pattern = "[AWS %s %s %.06f] %s(%s)"
  parts = [service, status, time.real, method_name, sanitize_options(options)]
  severity = :info
  
  if response.error
    pattern += " %s: %s"
    parts << response.error.class
    parts << response.error.message
    severity = :error
  end
  
  if response.cached
    pattern << " [CACHED]"
  end
  
  log(severity, pattern % parts)
end
sanitize_array(array) click to toggle source
# File lib/aws/core/client_logging.rb, line 113
def sanitize_array array
  "[" + array.map { |v| sanitize_value(v) }.join(",") + "]"
end
sanitize_file(file) click to toggle source
# File lib/aws/core/client_logging.rb, line 108
def sanitize_file file
  "#<File:#{file.path} (#{File.size(file.path)} bytes)>"
end
sanitize_hash(hash) click to toggle source
# File lib/aws/core/client_logging.rb, line 118
def sanitize_hash hash
  hash.map do |k,v|
    "#{sanitize_value(k)}=>#{sanitize_value(v)}"
  end.sort.join(",")
end
sanitize_string(str) click to toggle source
# File lib/aws/core/client_logging.rb, line 91
def sanitize_string str
  inspected = str.inspect
  if inspected.size > config.logger_truncate_strings_at
    summarize_string(str)
  else
    inspected
  end
end
sanitize_value(value) click to toggle source
# File lib/aws/core/client_logging.rb, line 75
def sanitize_value(value)
  case value
  when Hash
    '{' + sanitize_hash(value) + '}'
  when Array
    sanitize_array(value)
  when File
    sanitize_file(value)
  when String
    sanitize_string(value)
  else
    value.inspect
  end
end
summarize_string(str) click to toggle source
# File lib/aws/core/client_logging.rb, line 101
def summarize_string str
  # skip the openning "
  string_start = str.inspect[1,config.logger_truncate_strings_at]
  "#<String \"#{string_start}\" ... (#{str.size} characters)>"
end