module Middleware class Logger def initialize(app) @app = app end def call(env) headers = env.select {|k,v| k.start_with? 'HTTP_'} .map {|pair| [pair[0].sub(/^HTTP_/, ''), pair[1]].join(": ")} .sort request_params = env['rack.input'].read Rails.logger "Request: #{env["REQUEST_METHOD"]} #{env["PATH_INFO"]} #{headers} #{request_params}" @app.call(env).tap do |response| status, headers, body = *response Rails.logger "Response: #{status}" Rails.logger "Headers: #{headers}" Rails.logger "Response:" # body.each do |line| # @logger.info line # end end end end end