--- /dev/null
+require 'forwardable'
+
+module Faraday
+ class Response::Logger < Response::Middleware
+ extend Forwardable
+
+ def initialize(app, logger = nil)
+ super(app)
+ @logger = logger || begin
+ require 'logger'
+ ::Logger.new(STDOUT)
+ end
+ end
+
+ def_delegators :@logger, :debug, :info, :warn, :error, :fatal
+
+ def call(env)
+ info "#{env.method} #{env.url.to_s}"
+ debug('request') { dump_headers env.request_headers }
+ super
+ end
+
+ def on_complete(env)
+ info('Status') { env.status.to_s }
+ debug('response') { dump_headers env.response_headers }
+ end
+
+ private
+
+ def dump_headers(headers)
+ headers.map { |k, v| "#{k}: #{v.inspect}" }.join("\n")
+ end
+ end
+end