Module: LogStruct::Integrations::ActionMailer

Extended by:
IntegrationInterface, T::Sig
Defined in:
lib/log_struct/integrations/action_mailer.rb,
lib/log_struct/integrations/action_mailer/callbacks.rb,
lib/log_struct/integrations/action_mailer/event_logging.rb,
lib/log_struct/integrations/action_mailer/error_handling.rb,
lib/log_struct/integrations/action_mailer/metadata_collection.rb

Overview

ActionMailer integration for structured logging

Defined Under Namespace

Modules: Callbacks, ErrorHandling, EventLogging, MetadataCollection

Class Method Summary collapse

Methods included from IntegrationInterface

setup

Class Method Details

.setup(config) ⇒ Boolean?

Set up ActionMailer structured logging

Parameters:

Returns:

  • (Boolean, nil)


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/log_struct/integrations/action_mailer.rb', line 27

def self.setup(config)
  return nil unless defined?(::ActionMailer)
  return nil unless config.enabled
  return nil unless config.integrations.enable_actionmailer

  # Silence default ActionMailer logs (we use our own structured logging)
  # This is required because we replace the logging using our own callbacks
  if defined?(::ActionMailer::Base)
    ::ActionMailer::Base.logger = ::Logger.new(File::NULL)
  end

  # Register our custom observers and handlers
  # Registering these at the class level means all mailers will use them
  ActiveSupport.on_load(:action_mailer) { prepend LogStruct::Integrations::ActionMailer::MetadataCollection }
  ActiveSupport.on_load(:action_mailer) { prepend LogStruct::Integrations::ActionMailer::EventLogging }
  ActiveSupport.on_load(:action_mailer) { prepend LogStruct::Integrations::ActionMailer::ErrorHandling }
  ActiveSupport.on_load(:action_mailer) { prepend LogStruct::Integrations::ActionMailer::Callbacks }
  ActiveSupport.on_load(:action_mailer) { LogStruct::Integrations::ActionMailer::Callbacks.patch_message_delivery }

  true
end