# frozen_string_literal: true require "strum_logs/configuration" module StrumLogs class StrumEsbHooks class << self def before_publish_hook(body, properties) DefaultLogger.logger.info({ message: "Publishing AMQP message", body: body, properties: properties, protocol: "AMQP" }) end def before_handler_hook(body, properties, metadata) DefaultLogger.logger.info({ message: "Handling AMQP message", body: body, properties: properties, protocol: "AMQP", metadata: metadata }) end def after_handler_hook(body, properties, metadata, payload, error) data = handler_payload(body, properties, metadata, payload) if error data[:message] = "Failed to process AMQP message" data[:error] = error data[:stack_trace] = error.backtrace if Configuration.config.stack_trace DefaultLogger.logger.error(data) else DefaultLogger.logger.info(data) end end private def handler_payload(body, properties, metadata, payload) { message: "After handling AMQP message", body: payload || body, protocol: "AMQP", consumer_tag: properties[:consumer_tag], redelivered: properties[:redelivered], exchange: properties[:exchange], routing_key: properties[:routing_key], content_type: metadata[:content_type], headers: metadata[:headers], delivery_mode: metadata[:delivery_mode] } end end end end