1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
require 'mail/smtp_envelope'
module Mail
class LoggerDelivery
attr_reader :logger, :severity, :settings
def initialize(settings)
@settings = settings
@logger = settings.fetch(:logger) { default_logger }
@severity = derive_severity(settings[:severity])
end
def deliver!(mail)
logger.log(severity) { Mail::SmtpEnvelope.new(mail).message }
end
private
def default_logger
require 'logger'
::Logger.new($stdout)
end
def derive_severity(severity)
case severity
when nil
Logger::INFO
when Integer
severity
else
Logger.const_get(severity.to_s.upcase)
end
end
end
end
|