class PactBroker::Webhooks::WebhookRequestLogger
Attributes
execution_logger[R]
log_stream[R]
rubocop: enable Metrics/ParameterLists
options[R]
Public Class Methods
new(options)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 25 def initialize(options) @log_stream = StringIO.new @execution_logger = Logger.new(log_stream) @execution_logger.formatter = Formatter.new @options = options end
Public Instance Methods
log(uuid, webhook_request, http_response, success, error, webhook_context)
click to toggle source
rubocop: disable Metrics/ParameterLists
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 33 def log(uuid, webhook_request, http_response, success, error, webhook_context) safe_response = http_response ? HttpResponseWithUtf8SafeBody.new(http_response) : nil log_webhook_context(webhook_context) log_request(webhook_request) log_response(uuid, safe_response, webhook_context[:base_url]) if safe_response log_error(uuid, error, webhook_context[:base_url]) if error log_completion_message(success) log_stream.string end
Private Instance Methods
log_completion_message(success)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 99 def log_completion_message success if options[:success_log_message] && success execution_logger.info(options[:success_log_message]) logger.info(options[:success_log_message]) end if options[:failure_log_message] && !success execution_logger.info(options[:failure_log_message]) logger.info(options[:failure_log_message]) end end
log_error(uuid, e, base_url)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 111 def log_error uuid, e, base_url logger.info "Error executing webhook #{uuid} #{e.class.name} - #{e.message} #{e.backtrace.join("\n")}" if options[:show_response] execution_logger.error "Error executing webhook #{uuid} #{e.class.name} - #{e.message}" else execution_logger.error "Error executing webhook #{uuid}. #{response_body_hidden_message(base_url)}" end end
log_request(webhook_request)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 53 def log_request(webhook_request) http_request = options[:redact_sensitive_data] ? HttpRequestWithRedactedHeaders.new(webhook_request.http_request) : webhook_request.http_request logger.info "Making webhook #{webhook_request.uuid} request #{http_request.method.upcase} URI=#{webhook_request.url} (headers and body in debug logs)" logger.debug "Webhook #{webhook_request.uuid} request headers=#{http_request.to_hash}" logger.debug "Webhook #{webhook_request.uuid} request body=#{http_request.body}" execution_logger.info "HTTP/1.1 #{webhook_request.http_method.upcase} #{webhook_request.url}" http_request.to_hash.each do | name, value | execution_logger.info "#{name}: #{value.join(", ")}" end execution_logger.info(webhook_request.body) if webhook_request.body end
log_response(uuid, response, base_url)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 66 def log_response uuid, response, base_url log_response_to_application_logger(uuid, response) if options.fetch(:show_response) log_response_to_execution_logger(response) else execution_logger.info response_body_hidden_message(base_url) end end
log_response_to_application_logger(uuid, response)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 79 def log_response_to_application_logger uuid, response logger.info "Received response for webhook #{uuid} status=#{response.code} (headers and body in debug logs)" logger.debug "Webhook #{uuid} response headers=#{response.to_hash} " logger.debug "Webhook #{uuid} response body=#{response.unsafe_body}" end
log_response_to_execution_logger(response)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 85 def log_response_to_execution_logger response execution_logger.info "HTTP/#{response.http_version} #{response.code} #{response.message}" response.each_header do | name, value | execution_logger.info "#{name}: #{value}" end if response.body if response.unsafe_body? execution_logger.debug "Note that invalid UTF-8 byte sequences were removed from response body before saving the logs" end execution_logger.info response.body end end
log_webhook_context(webhook_context)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_logger.rb, line 48 def log_webhook_context(webhook_context) execution_logger.debug "Webhook context #{webhook_context.to_json}" logger.debug("Webhook context #{webhook_context.to_json}") end