Sha256: 9f00b5f62a76f605554669d62228290109e62eddde0c099601ccaa3e7f0a5d15
Contents?: true
Size: 1.8 KB
Versions: 3
Compression:
Stored size: 1.8 KB
Contents
module Napa class Middleware class Logger def initialize(app) @app = app end def call(env) # set transaction_id transaction_id=SecureRandom.uuid # log the request Napa::Logger.logger.debug format_request(env) # process the request status, headers, body = @app.call(env) # log the response Napa::Logger.logger.debug format_response(status, headers, body) # return the results [status, headers, body] ensure # Clear the transaction id after each request Napa::LogTransaction.clear end private def format_request(env) request = Rack::Request.new(env) params = request.params begin params = JSON.parse(request.body.read) if env['CONTENT_TYPE'] == 'application/json' rescue # do nothing, params is already set end request_data = { method: env['REQUEST_METHOD'], path: env['PATH_INFO'], query: env['QUERY_STRING'], host: Napa::Identity.hostname, pid: Napa::Identity.pid, revision: Napa::Identity.revision, params: params } request_data[:user_id] = current_user.try(:id) if defined?(current_user) {request: request_data} end def format_response(status, headers, body) response_body = nil begin response_body = body.respond_to?(:body) ? body.body.map{|r| r} : nil rescue response_body = body.inspect end {response: { status: status, headers: headers, response: response_body } } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
napa-0.1.2 | lib/napa/middleware/logger.rb |
napa-0.1.1 | lib/napa/middleware/logger.rb |
napa-0.1.0 | lib/napa/middleware/logger.rb |