module Fauna::ClientLogger

Example observer that can be used for debugging

Public Class Methods

logger() { |show_request_result(request_result)| ... } click to toggle source

Lambda that can be the observer for a Client. Will call the passed block on a string representation of each RequestResult.

Example:

logger = ClientLogger.logger do |str|
  puts str
end
Client.new observer: logger, ...
   # File lib/fauna/client_logger.rb
14 def self.logger
15   lambda do |request_result|
16     yield show_request_result(request_result)
17   end
18 end
show_request_result(request_result) click to toggle source

Translates a RequestResult to a string suitable for logging.

   # File lib/fauna/client_logger.rb
21 def self.show_request_result(request_result)
22   rr = request_result
23   logged = ''
24 
25   logged << "Fauna #{rr.method.to_s.upcase} /#{rr.path}#{query_string_for_logging(rr.query)}\n"
26   logged << "  Credentials: #{rr.auth}\n"
27   if rr.request_content
28     logged << "  Request JSON: #{indent(FaunaJson.to_json_pretty(rr.request_content))}\n"
29   end
30   logged << "  Response headers: #{indent(FaunaJson.to_json_pretty(rr.response_headers))}\n"
31   logged << "  Response JSON: #{indent(FaunaJson.to_json_pretty(rr.response_content))}\n"
32   logged << "  Response (#{rr.status_code}): Network latency #{(rr.time_taken * 1000).to_i}ms"
33 
34   logged
35 end