mirror of
https://github.com/samsonjs/grape_logging.git
synced 2026-03-25 08:55:47 +00:00
pass logger as option to middleware so it's easily usable when grape is mounted inside rails
This commit is contained in:
parent
b908496d42
commit
4b662e5c23
1 changed files with 15 additions and 5 deletions
|
|
@ -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
|
||||
Loading…
Reference in a new issue