class Shift::Api::Core::Middleware::Logger

Faraday middleware to log requests and responses with request ids to a given logger. The logger must support the “info” method such as active support logger

Attributes

app[RW]
formatter[RW]
id_generator[RW]
logger[RW]

Public Class Methods

new(app, logger:, id_generator: ::Shift::Api::Core::RequestId, formatter: ::Shift::Api::Core::Formatters::Logger) click to toggle source
# File lib/shift/api/core/middleware/logger.rb, line 12
def initialize(app, logger:, id_generator: ::Shift::Api::Core::RequestId, formatter: ::Shift::Api::Core::Formatters::Logger)
  self.app = app
  self.logger = logger
  self.id_generator = id_generator
  self.formatter = formatter
end

Public Instance Methods

call(env) click to toggle source

Logs the request and response to the logger @param [Faraday::Env] env The environment from faraday

# File lib/shift/api/core/middleware/logger.rb, line 21
def call(env)
  request_id = id_generator.call
  logger.info formatter.message_from_request_body(env, request_id)
  app.call(env).on_complete do |env|
    logger.info formatter.message_from_response_body(env, request_id)
  end
end