Class: Semlogr::Rack::RequestCorrelator

Inherits:
Object
  • Object
show all
Defined in:
lib/semlogr/rack/request_correlator.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, opts = {}) ⇒ RequestCorrelator

Returns a new instance of RequestCorrelator.



7
8
9
10
11
# File 'lib/semlogr/rack/request_correlator.rb', line 7

def initialize(app, opts = {})
  @app = app
  @id_header = opts[:id_header] || 'X-Correlation-Id'
  @id_generator = opts[:id_generator] || -> { SecureRandom.uuid }
end

Instance Method Details

#call(env) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/semlogr/rack/request_correlator.rb', line 13

def call(env)
  id_header = env_header_name(@id_header)
  correlation_id = env[id_header] || @id_generator.call
  status, headers, body =
    Semlogr::LogContext.push_property(correlation_id: correlation_id) do
      @app.call(env)
    end

  headers[@id_header] = correlation_id

  [status, headers, body]
end