Sha256: 4fda7c75e3eccb5ac3138f36aff5d50a3a5a212d628ae1dad052c8ac08cc78b3
Contents?: true
Size: 1.48 KB
Versions: 3
Compression:
Stored size: 1.48 KB
Contents
module Inferno module Utils # @api private module Middleware class RequestLogger attr_reader :app def initialize(app) @app = app end def logger @logger ||= Application['logger'] end def call(env) start = Time.now log_request(env) begin response = app.call(env) log_response(response, start, Time.now) rescue StandardError => e log_response([500, nil, nil], start, Time.now, e) raise e end response end def log_response(response, start_time, end_time, exception = nil) elapsed = end_time - start_time status, _response_headers, response_body = response if response status, = response if exception logger.info("#{status} in #{elapsed.in_milliseconds} ms") logger.info(response_body) end def log_request(env) method = env['REQUEST_METHOD'] scheme = env['rack.url_scheme'] host = env['HTTP_HOST'] path = env['REQUEST_URI'] query = env['rack.request.query_string'] body = env['rack.input'] body = body.instance_of?(Puma::NullIO) ? nil : body.string query_string = query.blank? ? '' : "?#{query}" logger.info("#{method} #{scheme}://#{host}#{path}#{query_string}") logger.info(body) if body.present? end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems