Class: VoyageAI::Instrumentation

Inherits:
Object
  • Object
show all
Defined in:
lib/voyageai/instrumentation.rb

Overview

Used for logging via HTTP.

Instance Method Summary collapse

Constructor Details

#initialize(logger:) ⇒ Instrumentation

Returns a new instance of Instrumentation.

Parameters:

  • logger (Logger)


7
8
9
# File 'lib/voyageai/instrumentation.rb', line 7

def initialize(logger:)
  @logger = logger
end

Instance Method Details

#finish(_, payload) ⇒ Object

Examples:

instrumenter.finish("request.http", response: response)

Parameters:

  • payload (Hash)

Options Hash (payload):

  • :response (HTTP::Response)


39
40
41
42
43
44
# File 'lib/voyageai/instrumentation.rb', line 39

def finish(_, payload)
  response = payload[:response]
  return unless response

  @logger.info("#{response.status.code} #{response.status.reason}")
end

#instrument(name, payload = {}) ⇒ Object

Parameters:

  • name (String)
  • payload (Hash) (defaults to: {})

Returns:

  • (Object)


15
16
17
18
19
20
# File 'lib/voyageai/instrumentation.rb', line 15

def instrument(name, payload = {})
  start(name, payload)
  yield(payload) if block_given?
ensure
  finish(name, payload)
end

#start(_, payload) ⇒ Object

Examples:

instrumenter.start("request.http", request: request)

Parameters:

  • payload (Hash)

Options Hash (payload):

  • :request (HTTP::Request)


27
28
29
30
31
32
# File 'lib/voyageai/instrumentation.rb', line 27

def start(_, payload)
  request = payload[:request]
  return unless request

  @logger.info("#{request.verb.upcase} #{request.uri}")
end