class Ashikawa::Core::MinimalLogger

A more minimal logger as replacement for the very chatty Faraday logger

Attributes

debug_headers[R]

Should HTTP headers be logged

@api public @return [Boolean] If the headers will be logged or not. Defaults to ‘false`

logger[R]

The logger to be used

@api public @return [Logger] The configured logger

Public Class Methods

new(app, logger, options = {}) click to toggle source

Initialize the middleware

@api public @param [Faraday::Middleware] app The middleware to nest this one in @param [Logger] logger The logger to be used @option options [Boolean] :debug_headers Should the headers be logged. Defaults to ‘false`

Calls superclass method
# File lib/ashikawa-core/minimal_logger.rb, line 27
def initialize(app, logger, options = {})
  super(app)
  @logger        = logger
  @debug_headers = options.fetch(:debug_headers) { false }
end

Public Instance Methods

call(env) click to toggle source

Calls the this middleware and passes on to ‘super`

@api public @param [Faraday::Env] env The current env object

Calls superclass method
# File lib/ashikawa-core/minimal_logger.rb, line 37
def call(env)
  logger.debug('request') { "#{env.method.upcase} #{env.url}#{dump_headers(env.request_headers)}" }
  super
end
on_complete(env) click to toggle source

The callback when the request was completed

@api public @param [Faraday::Env] env The current env object

# File lib/ashikawa-core/minimal_logger.rb, line 46
def on_complete(env)
  logger.debug('response') { "#{env.method.upcase} #{env.url} #{env.status}#{dump_headers(env.response_headers)}" }
end

Private Instance Methods

dump_headers(headers) click to toggle source

Creates a one-liner out of headers

@api private @params [Hash] headers A headers hash

# File lib/ashikawa-core/minimal_logger.rb, line 56
def dump_headers(headers)
  " #{headers.map { |field_name, field_value| "#{field_name}: #{field_value.inspect}" }.join(' ')}" if debug_headers
end