class OpenTracing::Instrumentation::Faraday::ResponseLogger

ResponseLogger add request and response log_kv to faraday_request span

Constants

DEFAULT_REQUEST_LOG_HEADERS
DEFAULT_REQUEST_TAG_HEADERS
DEFAULT_RESPONSE_LOG_HEADERS
DEFAULT_RESPONSE_TAG_HEADERS

Attributes

request_log_headers[R]
request_tag_headers[R]
response_log_headers[R]
response_tag_headers[R]

Public Class Methods

new( request_log_headers: DEFAULT_REQUEST_LOG_HEADERS, request_tag_headers: DEFAULT_REQUEST_TAG_HEADERS, response_tag_headers: DEFAULT_RESPONSE_TAG_HEADERS, response_log_headers: DEFAULT_RESPONSE_LOG_HEADERS ) click to toggle source
# File lib/opentracing/instrumentation/faraday/response_logger.rb, line 28
def initialize(
  request_log_headers: DEFAULT_REQUEST_LOG_HEADERS,
  request_tag_headers: DEFAULT_REQUEST_TAG_HEADERS,
  response_tag_headers: DEFAULT_RESPONSE_TAG_HEADERS,
  response_log_headers: DEFAULT_RESPONSE_LOG_HEADERS
)
  @request_tag_headers = request_tag_headers
  @request_log_headers = request_log_headers
  @response_tag_headers = response_tag_headers
  @response_log_headers = response_log_headers
end

Public Instance Methods

log_request(span, request_headers) click to toggle source
# File lib/opentracing/instrumentation/faraday/response_logger.rb, line 40
def log_request(span, request_headers)
  log_headers(span, request_headers, request_log_headers, 'request')
  tag_headers(span, request_headers, request_tag_headers, 'request')
end
log_response(span, response_headers) click to toggle source
# File lib/opentracing/instrumentation/faraday/response_logger.rb, line 45
def log_response(span, response_headers)
  log_headers(span, response_headers, response_log_headers, 'response')
  tag_headers(span, response_headers, response_tag_headers, 'response')
end

Private Instance Methods

log_headers(span, headers, log_headers, event) click to toggle source
# File lib/opentracing/instrumentation/faraday/response_logger.rb, line 61
def log_headers(span, headers, log_headers, event)
  header_hash =
    log_headers
    .map { |key| [key, headers[key]] }
    .reject { |(_key, value)| value.nil? }
    .to_h

  span.log_kv(
    event: event,
    headers: JSON.dump(header_hash),
  )
end
tag_headers(span, headers, tag_headers, event) click to toggle source
# File lib/opentracing/instrumentation/faraday/response_logger.rb, line 52
def tag_headers(span, headers, tag_headers, event)
  tag_headers.each do |key, header_name|
    header_value = headers[header_name]
    next unless header_value

    span.set_tag("http.#{event}.#{key}", header_value)
  end
end