Class: Rack::QueueMetrics::QueueTime
- Inherits:
-
Object
- Object
- Rack::QueueMetrics::QueueTime
- Includes:
- Notify
- Defined in:
- lib/queue-metrics/queue_time.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, logger = nil) ⇒ QueueTime
constructor
A new instance of QueueTime.
Methods included from Notify
Constructor Details
#initialize(app, logger = nil) ⇒ QueueTime
Returns a new instance of QueueTime.
10 11 12 13 14 15 16 17 18 |
# File 'lib/queue-metrics/queue_time.rb', line 10 def initialize(app, logger = nil) @app = app @instrument_name = "rack.queue-metrics.queue-time" @logger = logger if @logger.nil? @logger = ::Logger.new($stdout) @logger.formatter = L2MetFormatter.new end end |
Instance Method Details
#call(env) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/queue-metrics/queue_time.rb', line 20 def call(env) middleware_start = (Time.now.to_f * 1000.0).round request_start = (env["HTTP_X_REQUEST_START"] || 0).to_i request_id = env["HTTP_REQUEST_ID"] request_start_delta = nil report = "measure=#{@instrument_name} middleware_start=#{middleware_start}" if request_start > 0 request_start_delta = middleware_start - request_start report << " request_start=#{request_start} request_start_delta=#{request_start_delta}" end report << " request_id=#{request_id}" if request_id @logger.info report notify(:middleware_start => middleware_start, :request_start => request_start, :request_start_delta => request_start_delta, :request_id => request_id) if should_notify? env["MIDDLEWARE_START"] = middleware_start @app.call(env) end |