Class: Rack::QueueMetrics::AppTime
- Inherits:
-
Object
- Object
- Rack::QueueMetrics::AppTime
- Includes:
- Notify
- Defined in:
- lib/queue-metrics/app_time.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, logger = nil) ⇒ AppTime
constructor
A new instance of AppTime.
Methods included from Notify
Constructor Details
#initialize(app, logger = nil) ⇒ AppTime
Returns a new instance of AppTime.
10 11 12 13 14 15 16 17 18 |
# File 'lib/queue-metrics/app_time.rb', line 10 def initialize(app, logger = nil) @app = app @instrument_name = "rack.queue-metrics.app-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 39 40 41 42 43 44 45 |
# File 'lib/queue-metrics/app_time.rb', line 20 def call(env) app_start = (Time.now.to_f * 1000.0).round request_id = env["HTTP_REQUEST_ID"] middleware_start = (env["MIDDLEWARE_START"] || 0).to_i middleware_delta = nil report = "measure=#{@instrument_name}.start app_start=#{app_start}" if middleware_start > 0 middleware_delta = app_start - middleware_start report << " middleware_delta=#{middleware_delta}" end report << " request_id=#{request_id}" if request_id @logger.info report status, headers, response = @app.call(env) app_end = (Time.now.to_f * 1000.0).round app_delta = app_end - app_start report = "measure=#{@instrument_name}.end app_end=#{app_end}" report << " app_delta=#{app_delta}" report << " request_id=#{request_id}" if request_id @logger.info report notify(:app_end => app_end, :app_start => app_start, :app_delta => app_delta, :middleware_delta => middleware_delta, :request_id => request_id) if should_notify? [status, headers, response] end |