diff --git a/lib/grape_logging/middleware/request_logger.rb b/lib/grape_logging/middleware/request_logger.rb index cca2453..7c279ae 100644 --- a/lib/grape_logging/middleware/request_logger.rb +++ b/lib/grape_logging/middleware/request_logger.rb @@ -4,24 +4,25 @@ module GrapeLogging module Middleware class RequestLogger < Grape::Middleware::Base def before - @env[:db_duration] = 0 + env[:db_duration] = 0 ActiveSupport::Notifications.subscribe('sql.active_record') do |*args| event = ActiveSupport::Notifications::Event.new(*args) - @env[:db_duration] += event.duration + env[:db_duration] += event.duration end if defined?(ActiveRecord) end def call!(env) original_response = nil - duration = Benchmark.realtime { original_response = super(env) } - @app.logger.info parameters(::Rack::Request.new(env), original_response, duration) + duration = Benchmark.realtime { original_response = super(env) } + logger.info parameters(original_response, duration) + original_response end protected - def parameters(request, response, duration) + def parameters(response, duration) { path: request.path, params: request.params, @@ -31,6 +32,15 @@ module GrapeLogging status: response.first } end + + private + def logger + @logger ||= @options[:logger] || Logger.new(STDOUT) + end + + def request + @request ||= ::Rack::Request.new(env) + end end end end \ No newline at end of file