#3 Add a smtp logger
Merged 4 years ago by mattia. Opened 4 years ago by mattia.

file modified
+31
@@ -25,6 +25,7 @@ 

  

  """Setup review_stats.py logging."""

  

+ from logging.handlers import SMTPHandler

  from systemd import journal

  import logging

  
@@ -50,3 +51,33 @@ 

  

      log.addHandler(console_handler)

      log.addHandler(logfile_handler)

+ 

+     if 'mail_server' in config_file['review-stats-logging']:

+         try:

+             # Setup a smtp logger

+             mail_server = config_file.get('review-stats-logging', 'mail_server').split(':')

+             to_list = [mail for mail in config_file.get('review-stats-logging',

+                                                         'mail_to',

+                                                         fallback='').split(',')]

+             if ('mail_secure' in config_file['review-stats-logging'] and

+                     config_file['review-stats-logging']['mail_secure'] == 'true'):

+                 secure = ()

+                 credentials = (config_file.get('review-stats-logging', 'mail_username'),

+                                config_file.get('review-stats-logging', 'mail_password'))

+             else:

+                 secure = None

+                 credentials = None

+             mail_handler = SMTPHandler(mailhost=mail_server,

+                                        fromaddr=config_file.get('review-stats-logging',

+                                                                 'mail_from'),

+                                        toaddrs=to_list,

+                                        subject='review-stats script error',

+                                        credentials=credentials,

+                                        secure=secure)

+             mail_format = logging.Formatter('%(asctime)s %(name)s %(levelname)-8s %(message)s')

+             mail_handler.setFormatter(mail_format)

+             mail_handler.setLevel(config_file.get('review-stats-logging', 'mail_level',

+                                                   fallback='ERROR'))

+             log.addHandler(mail_handler)

+         except Exception:

+             log.warning('Unable to use SMTP logging', exc_info=1)

@@ -6,3 +6,12 @@ 

  

  [review-stats-logging]

  journal_level = INFO

+ # Be aware these adresses will receive one email for each log message sent to the queue

+ # Using a level lower than ERROR is discouraged

+ mail_level = ERROR

+ # mail_server = <SERVER:PORT>

+ # mail_username = <USERNAME>

+ # mail_password = <PASSWORD>

+ # mail_secure = true

+ # mail_from = <FROM_ADDRESS_

+ # mail_to = <TO_ADDRESSES_COMMA_SEPARATED>

Provide a way to inform admins about errors by email.

Closes #1

Pull-Request has been merged by mattia

4 years ago