class ApiClient::Connection::Middlewares::Request::Logger
Public Class Methods
new(app, logger = nil)
click to toggle source
# File lib/api_client/connection/middlewares/request/logger.rb, line 26 def initialize(app, logger = nil) @logger = logger || ::Logger.new(STDOUT) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/api_client/connection/middlewares/request/logger.rb, line 4 def call(env) debug_lines = [] should_log_details = @logger.level <= ::Logger::DEBUG gather_request_debug_lines(env, debug_lines) if should_log_details start = CurrentTimestamp.milis response = @app.call(env) taken_sec = (CurrentTimestamp.milis - start) / 1000.0 gather_response_debug_lines(response, taken_sec, debug_lines) if response && should_log_details if should_log_details debug_lines.each { |line| line.encode!("UTF-8", invalid: :replace, undef: :replace) } @logger.debug { debug_lines.join("\n") } else @logger.info { "#{env[:method].to_s.upcase} #{env[:url]}: #{"%.4f" % taken_sec} seconds" } end response end
Private Instance Methods
gather_request_debug_lines(env, debug_lines)
click to toggle source
# File lib/api_client/connection/middlewares/request/logger.rb, line 33 def gather_request_debug_lines(env, debug_lines) debug_lines << "> #{env[:method].to_s.upcase} #{env[:url]}" env[:request_headers].each { |k, v| debug_lines << "> #{k}: #{v}" } debug_lines << "> " debug_lines << "> #{env[:body]}\n> " if env[:body] && env[:body] != "" debug_lines end
gather_response_debug_lines(response, taken_sec, debug_lines)
click to toggle source
# File lib/api_client/connection/middlewares/request/logger.rb, line 41 def gather_response_debug_lines(response, taken_sec, debug_lines) debug_lines << "< responded in #{"%.4f" % taken_sec} seconds with HTTP #{response.status}" response.headers.each { |k, v| debug_lines << "< #{k}: #{v}" } debug_lines << "< " debug_lines << "< #{response.body}\n> " if response.body && response.body != "" debug_lines end