mirror of
https://github.com/samsonjs/grape_logging.git
synced 2026-04-27 14:57:40 +00:00
remove benchmark dependency, for logging db_runtime use instance variable and not env, do not overwrite call! anymore
This commit is contained in:
parent
1e194073f6
commit
f465c1027c
1 changed files with 29 additions and 20 deletions
|
|
@ -1,38 +1,35 @@
|
||||||
require 'benchmark'
|
|
||||||
require 'grape/middleware/base'
|
require 'grape/middleware/base'
|
||||||
|
|
||||||
module GrapeLogging
|
module GrapeLogging
|
||||||
module Middleware
|
module Middleware
|
||||||
class RequestLogger < Grape::Middleware::Base
|
class RequestLogger < Grape::Middleware::Base
|
||||||
def before
|
def before
|
||||||
env[:db_duration] = 0
|
start_time
|
||||||
|
|
||||||
|
@db_duration = 0
|
||||||
ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
|
ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
|
||||||
event = ActiveSupport::Notifications::Event.new(*args)
|
event = ActiveSupport::Notifications::Event.new(*args)
|
||||||
env[:db_duration] += event.duration
|
@db_duration += event.duration
|
||||||
end if defined?(ActiveRecord)
|
end if defined?(ActiveRecord)
|
||||||
end
|
end
|
||||||
|
|
||||||
def call!(env)
|
def after
|
||||||
original_response = nil
|
stop_time
|
||||||
|
logger.info parameters(request, response)
|
||||||
duration = Benchmark.realtime { original_response = super(env) }
|
nil
|
||||||
logger.info parameters(original_response, duration)
|
|
||||||
|
|
||||||
original_response
|
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def parameters(response, duration)
|
def parameters(request, response)
|
||||||
{
|
{
|
||||||
path: request.path,
|
path: request.path,
|
||||||
params: request.params,
|
params: request.params.to_hash,
|
||||||
method: request.request_method,
|
method: request.request_method,
|
||||||
total: (duration * 1000).round(2),
|
total: total_runtime,
|
||||||
db: request.env[:db_duration].round(2),
|
db: @db_duration.round(2),
|
||||||
status: response.first
|
status: response.status
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def logger
|
def logger
|
||||||
|
|
@ -42,6 +39,18 @@ module GrapeLogging
|
||||||
def request
|
def request
|
||||||
@request ||= ::Rack::Request.new(env)
|
@request ||= ::Rack::Request.new(env)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def total_runtime
|
||||||
|
((stop_time - start_time) * 1000).round(2)
|
||||||
|
end
|
||||||
|
|
||||||
|
def start_time
|
||||||
|
@start_time ||= Time.now
|
||||||
|
end
|
||||||
|
|
||||||
|
def stop_time
|
||||||
|
@stop_time ||= Time.now
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Loading…
Reference in a new issue