Skip to content

Instantly share code, notes, and snippets.

@debbbbie
Forked from skwp/logger_middleware.rb
Created October 11, 2015 02:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save debbbbie/8c151545cb91611186a7 to your computer and use it in GitHub Desktop.
Save debbbbie/8c151545cb91611186a7 to your computer and use it in GitHub Desktop.
A request/response logger Rack middleware.
module Middleware
class Logger
def initialize(app, logger)
@app = app
@logger = logger
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
@logger.info "Request: #{env["REQUEST_METHOD"]} #{env["PATH_INFO"]} #{headers} #{request_params}"
@app.call(env).tap do |response|
status, headers, body = *response
@logger.info "Response: #{status}"
@logger.info "Headers: #{headers}"
@logger.info "Response:"
body.each do |line|
@logger.info line
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment