Class: HTTP::Features::Logging

Inherits:
HTTP::Feature show all
Defined in:
lib/http/features/logging.rb

Overview

Log requests and responses. Request verb and uri, and Response status are logged at info, and the headers and bodies of both are logged at debug. Be sure to specify the logger when enabling the feature:

HTTP.use(logging: Logger.new(STDOUT)).get("https://example.com/")

Defined Under Namespace

Classes: NullLogger

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from HTTP::Feature

#on_error

Constructor Details

#initialize(logger: NullLogger.new) ⇒ Logging



28
29
30
31
# File 'lib/http/features/logging.rb', line 28

def initialize(logger: NullLogger.new)
  super()
  @logger = logger
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



26
27
28
# File 'lib/http/features/logging.rb', line 26

def logger
  @logger
end

Instance Method Details

#wrap_request(request) ⇒ Object



33
34
35
36
37
38
# File 'lib/http/features/logging.rb', line 33

def wrap_request(request)
  logger.info { "> #{request.verb.to_s.upcase} #{request.uri}" }
  logger.debug { "#{stringify_headers(request.headers)}\n\n#{request.body.source}" }

  request
end

#wrap_response(response) ⇒ Object



40
41
42
43
44
45
# File 'lib/http/features/logging.rb', line 40

def wrap_response(response)
  logger.info { "< #{response.status}" }
  logger.debug { "#{stringify_headers(response.headers)}\n\n#{response.body}" }

  response
end