Sha256: c8394f946d1c733a626e43e443fe58f7f535a454231396353dcdfbe7b60f6b53
Contents?: true
Size: 1.87 KB
Versions: 6
Compression:
Stored size: 1.87 KB
Contents
require 'forwardable' class DefaultLogger < Faraday::Middleware extend Forwardable def_delegators :@logger, :debug, :info, :warn, :error, :fatal def initialize(app, options = {}) @app = app @logger = options.fetch(:logger) { require 'logger' ::Logger.new($stderr) } end def call(env) start_time = Time.now info request_info(env) request_debug(env) @app.call(env).on_complete do end_time = Time.now response_time = end_time - start_time info response_info(env, response_time) response_debug(env) end end private def request_info(env) "Started %s request to: %s" % [ env[:method].to_s.upcase, env[:url] ] end def response_info(env, response_time) "Response from %s; Status: %d; Time: %.1fms" % [ env[:url], env[:status], (response_time * 1_000.0) ] end def request_debug(env) request_headers = obfuscate_auth env[:request_headers] debug_request_response("Request", request_headers, env[:body]) end def obfuscate_auth(headers) headers.dup.tap do |h| if auth = h["Authorization"] #display first few and last few characters h["Authorization"] = "#{auth[0..10]}****#{auth[-4..-1]}" end end end def response_debug(env) debug_request_response("Response", env[:response_headers], env[:body]) end def debug_request_response(name, headers, body) debug "#{name} headers: #{JSON.generate headers}" debug "#{name} body: #{format_body body}" end def format_body(body) return '' unless body JSON.generate JSON.parse Array(body).join("\n") rescue JSON::ParserError Array(body).join("\n").gsub /\n/, '\n' end end
Version data entries
6 entries across 6 versions & 1 rubygems