Class: DaemonLogger

Inherits:
Object
  • Object
show all
Includes:
Mixins, Singleton
Defined in:
lib/daemon_logger.rb

Defined Under Namespace

Modules: Mixins Classes: NullLogger

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixins

#log, #log_exception, #with_exception_logging

Instance Attribute Details

#email_receiversObject

Returns the value of attribute email_receivers.



8
9
10
# File 'lib/daemon_logger.rb', line 8

def email_receivers
  @email_receivers
end

#loggerObject



37
38
39
40
41
42
43
44
# File 'lib/daemon_logger.rb', line 37

def logger
  if @logger
    @logger
  else
    warn 'Logger not initialized yet, run init with :log_file_path' 
    NullLogger.new
  end
end

#smtp_serverObject

Returns the value of attribute smtp_server.



8
9
10
# File 'lib/daemon_logger.rb', line 8

def smtp_server
  @smtp_server
end

Class Method Details

.init(*params) ⇒ Object



33
34
35
# File 'lib/daemon_logger.rb', line 33

def self.init(*params)
  instance.init(*params)
end

Instance Method Details

#init(params) ⇒ Object

Params

params<Hash>
log_file_path<String>

куда будет писаться лог

email_receivers<Array>

список получателей сообщений о критических ошибках

Raises:

  • (TypeError)


21
22
23
24
25
26
27
28
29
30
31
# File 'lib/daemon_logger.rb', line 21

def init(params)
  raise TypeError.new(":log_file_path required") unless params[:log_file_path]
  file = File.open(params[:log_file_path], 'a')
  file.sync = true
  self.logger = Logger.new(file)
  logger.level = Logger::DEBUG
  logger.formatter = Logger::Formatter.new
  logger.datetime_format = "%y-%m-%d %H:%M:%S.%L"
  self.email_receivers = params[:email_receivers].to_a
  self.smtp_server = params[:smtp_server] || 'localhost'
end

#send_emails_to_receivers(message) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/daemon_logger.rb', line 46

def send_emails_to_receivers(message)
  return if !email_receivers or email_receivers.empty?
  Net::SMTP.start(smtp_server) do |smtp|
    smtp.send_message message, '[email protected]', email_receivers
  end
rescue => e
  log_exception(e, false, "SENDING EXCEPTION EMAIL ERROR")
end