class Restool::RequestLogger

Public Class Methods

new(host, opts) click to toggle source
# File lib/restool/logger/request_logger.rb, line 4
def initialize(host, opts)
  @host = host
  @opts = opts
end

Public Instance Methods

log(request, &http_request) click to toggle source
# File lib/restool/logger/request_logger.rb, line 9
def log(request, &http_request)
  log_request(request) if log?
  response = http_request.call
  log_response(response) if log?

  response
rescue StandardError => e
  log_error(e) if log?

  raise
end
log?() click to toggle source
# File lib/restool/logger/request_logger.rb, line 25
def log?
  if @opts[:log] != nil
    @opts[:log]
  else
    @opts[:logger] != nil
  end
end
logger() click to toggle source
# File lib/restool/logger/request_logger.rb, line 21
def logger
  @opts[:logger]
end

Private Instance Methods

format_hash(headers) click to toggle source
# File lib/restool/logger/request_logger.rb, line 51
def format_hash(headers)
  headers.map { |key, value| "#{key}: #{value}" }.join(", ")
end
log_error(error) click to toggle source
# File lib/restool/logger/request_logger.rb, line 47
def log_error(error)
  logger.error { "Restool error: #{error}" }
end
log_request(request) click to toggle source
# File lib/restool/logger/request_logger.rb, line 35
def log_request(request)
  logger.info  { "Restool Service #{@host}" }
  logger.info  { "#{request.method.upcase} #{request.path}" }
  logger.info  { "Headers: { #{format_hash(request.headers)} }" }
  logger.debug { "Params: { #{format_hash(request.params)} }" }
end
log_response(response) click to toggle source
# File lib/restool/logger/request_logger.rb, line 42
def log_response(response)
  logger.info  { "Restool response (status #{response.code}):" }
  logger.debug { response.body }
end