2017-01-18 1 views
0

Je récupère les journaux cloudwatch, en mettant alors dans le fichier journal, puis les envoyer par courrier en utilisant Amazon SES. Je veux un moyen de formater le fileHandler de l'enregistreur avant de l'envoyer. Je veux vraiment avoir un email lisible agréable avec des couleurs et des colonnes ...format les journaux par un modèle HTML

logLevel = logging.INFO 
logger1.setLevel(logLevel) 
formatter = logging.Formatter(' :: %(levelname)s :: %(message)s') 
fileHandler = os.path.join('/tmp/', 'error-logs.log') 
fh = logging.handlers.RotatingFileHandler(fileHandler, maxBytes=0, backupCount=0) 
fh.setLevel(logLevel) 
fh.setFormatter(formatter) 
logger1.addHandler(fh) 

Voilà comment je remplirai l'enregistreur:

output = [] 
output.append(event['message']) 
logger1.info(' | '.join(output)) 

Après avoir rempli le fichier avec enregistreur, je vous envoie comme la poste this:

for file in sorted(glob.glob(filehandler + '*'), key=os.path.getmtime): 
      body = open(file, 'r').read() 
      subject = objet+" %s" % (today.strftime("%Y-%m-%d")) 
      for email in emailarg.split(','): 
       response = ses.send_email(
          Source = email, 
          Destination={ 
           'ToAddresses': [ 
            email, 
           ], 
          }, 
          Message={ 
           'Subject': { 
            'Data': subject 
           }, 
           'Body': { 
            'Text': { 
             'Data': body 
            }, 
           } 
          } 
         ) 

      os.remove(file) 

Avez-vous un moyen de formater correctement le fichier journal (texte) en utilisant HTML?

Répondre

0

Je résolu le problème par:

  • mettre des balises HTML dans la liste de sortie (en utilisant les balises de table)
  • En utilisant HTML comme le format du message pour le corps de AWS SES comme ceci:
response = ses.send_email(
          Source = email, 
          Destination={ 
           'ToAddresses': [ 
            email, 
           ], 
          }, 
          Message={ 
           'Subject': { 
            'Data': subject 
           }, 
           'Body': { 
            'Html': { 
             'Data': body 
            }, 
           } 
          } 
        )