Class: RailsSemanticLogger::ActionMailer::LogSubscriber

Inherits:
ActiveSupport::LogSubscriber show all
Defined in:
lib/rails_semantic_logger/action_mailer/log_subscriber.rb

Defined Under Namespace

Classes: EventFormatter

Instance Method Summary collapse

Methods inherited from ActiveSupport::LogSubscriber

#silenced?

Instance Method Details

#deliver(event) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rails_semantic_logger/action_mailer/log_subscriber.rb', line 7

def deliver(event)
  ex = event.payload[:exception_object]
  message_id = event.payload[:message_id]
  duration = event.duration.round(1)
  if ex
    log_with_formatter event: event, log_duration: true, level: :error do |_fmt|
      {
        message:   "Error delivering mail #{message_id} (#{duration}ms)",
        exception: ex
      }
    end
  else
    message =
      if event.payload[:perform_deliveries]
        "Delivered mail #{message_id} (#{duration}ms)"
      else
        "Skipped delivery of mail #{message_id} as `perform_deliveries` is false"
      end

    log_with_formatter event: event, log_duration: true do |_fmt|
      {message: message}
    end
  end
end

#process(event) ⇒ Object

An email was generated.



33
34
35
36
37
38
39
40
# File 'lib/rails_semantic_logger/action_mailer/log_subscriber.rb', line 33

def process(event)
  mailer   = event.payload[:mailer]
  action   = event.payload[:action]
  duration = event.duration.round(1)
  log_with_formatter event: event do |_fmt|
    {message: "#{mailer}##{action}: processed outbound mail in #{duration}ms"}
  end
end