From 9f7eb3012e2af1b0ff68b9f2e40c71474f473e00 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 3 Nov 2020 15:03:04 -0700 Subject: [PATCH] lf_mail.py : using the logg --- lf_mail.py | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/lf_mail.py b/lf_mail.py index 1658bef5..74bdbb02 100755 --- a/lf_mail.py +++ b/lf_mail.py @@ -1,6 +1,10 @@ #!/usr/bin/python3 import smtplib import argparse +import logging +import sys + +FORMAT = '%(asctime)s %(name)s %(levelname)s: %(message)s' EPILOG = '''\ Text message via email: @@ -26,6 +30,17 @@ def usage(): print("-s | --smtp smtp server --smtp default smtp.gmail.com default=smtp.gmail.com") print("-p | --port smtp port --port default 465 (SSL) default=465") +# see https://stackoverflow.com/a/13306095/11014343 +class FileAdapter(object): + def __init__(self, logger): + self.logger = logger + def write(self, data): + # NOTE: data can be a partial line, multiple lines + data = data.strip() # ignore leading/trailing whitespace + if data: # non-blank + self.logger.info(data) + def flush(self): + pass # leave it to logging to flush properly def main(): @@ -38,28 +53,46 @@ def main(): parser.add_argument("-b", "--body", type=str, help="email body --body ", required = True) parser.add_argument("-s,", "--smtp", type=str, help="smtp server --smtp default smtp.gmail.com ", default="smtp.gmail.com") parser.add_argument("-p,", "--port", type=str, help="smtp port --port default 465 (SSL)", default="465") + parser.add_argument("-l", "--loge", type=str, help="logfile for messages, stdout means output to console",default="stdout") args = None try: args = parser.parse_args() + logfile = args.log except Exception as e: print(e) usage() exit(2) + + console_handler = logging.StreamHandler() + formatter = logging.Formatter(FORMAT) + logg = logging.getLogger(__name__) + logg.setLevel(logging.DEBUG) + file_handler = None + if (logfile is not None): + if (logfile != "stdout"): + file_handler = logging.FileHandler(logfile, "w") - email_text = 'Subject: {}\n\n{}'.format(args.subject, args.body ) + file_handler.setLevel(logging.DEBUG) + file_handler.setFormatter(formatter) + logg.addHandler(file_handler) + logg.addHandler(logging.StreamHandler(sys.stdout)) # allows to logging to file and stderr + else: + # stdout logging + logging.basicConfig(format=FORMAT, handlers=[console_handler]) try: + email_text = 'Subject: {}\n\n{}'.format(args.subject, args.body ) server = smtplib.SMTP_SSL(args.smtp, int(args.port)) server.ehlo() server.login(args.user,args.passwd) server.sendmail(args.user, args.to, email_text) server.close() - print('email Sent! smtp server: {} port: {}'.format(args.smtp, args.port)) + logg.info('email Sent! smtp server: {} port: {}'.format(args.smtp, args.port)) except: - print('email failed') - print("Is access for less secure apps setting has been turned on for the email account?") + logg.info('email failed') + logg.info("Is access for less secure apps setting has been turned on for the email account?") # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- if __name__ == '__main__':