Class: HookDeck::Middleware::Logging

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/hookdeck/middlewares/logging.rb

Overview

Logging middleware that provides detailed request/response logging with security-aware filtering. Automatically redacts sensitive information from headers and request/response bodies.

Instance Method Summary collapse

Constructor Details

#initialize(app, logger: nil) ⇒ Logging

Initialize the logging middleware

Parameters:

  • app (#call)

    The Faraday app

  • logger (Logger, nil) (defaults to: nil)

    Optional custom logger (defaults to STDOUT logger)



12
13
14
15
# File 'lib/hookdeck/middlewares/logging.rb', line 12

def initialize(app, logger: nil)
  super(app)
  @logger = logger || default_logger
end

Instance Method Details

#call(env) ⇒ Object

Executes the middleware, logging request and response details

Parameters:

  • env (Hash)

    The Faraday environment hash



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/hookdeck/middlewares/logging.rb', line 19

def call(env)
  start_time = Time.now
  log_request(env)

  @app.call(env).on_complete do |response_env|
    duration = Time.now - start_time
    log_response(response_env, duration)
  end
rescue StandardError => e
  log_error(e)
  raise
end