Sha256: 5ba277cfd1d799b1b988038ace97b036c073c462aa4788907caf3e82724ce25d

Contents?: true

Size: 845 Bytes

Versions: 6

Compression:

Stored size: 845 Bytes

Contents

# ai_client/logger_middleware.rb

class AiClient

  # logger = Logger.new(STDOUT)
  #
  # AiClient.use(
  #   AiClient::LoggingMiddleware.new(logger)
  # )
  #
  # Or, if you want to use the same logger as the AiClient:
  # AiClient.use(
  #   AiClient::LoggingMiddleware.new(
  #     AiClient.configuration.logger
  #   )
  # )

  class LoggingMiddleware
    def initialize(logger)
      @logger = logger
    end

    def call(client, next_middleware, *args)
      method_name = args.first.is_a?(Symbol) ? args.first : 'unknown method'
      @logger.info("Starting #{method_name} call")
      start_time = Time.now

      result = next_middleware.call(*args)

      end_time = Time.now
      duration = end_time - start_time
      @logger.info("Finished #{method_name} call (took #{duration.round(3)} seconds)")

      result
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ai_client-0.2.4 lib/ai_client/logger_middleware.rb
ai_client-0.2.3 lib/ai_client/logger_middleware.rb
ai_client-0.2.2 lib/ai_client/logger_middleware.rb
ai_client-0.2.1 lib/ai_client/logger_middleware.rb
ai_client-0.2.0 lib/ai_client/logger_middleware.rb
ai_client-0.1.0 lib/ai_client/logger_middleware.rb