Sha256: 31791a06a63564b51b3e8b388fa97a30a9c60f0c86bbc5902dc26c4c87feb495
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
module Napa class Middleware class Logger def initialize(app) @app = app end def call(env) # log the request Napa::Logger.logger.info 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: request.request_method, path: request.path_info, query: request.query_string, host: Napa::Identity.hostname, pid: Napa::Identity.pid, revision: Napa::Identity.revision, params: params, remote_ip: request.ip } 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 Napa::Logger.response(status, headers, response_body) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
napa-0.4.0 | lib/napa/middleware/logger.rb |