加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

从脚本中发送python控制台输出作为电子邮件的最佳方法是什么?

发布时间:2020-12-20 11:46:04 所属栏目:Python 来源:网络整理
导读:我有一个 python脚本,可以执行多项操作并在控制台上打印日志.现在,我还没有使用任何日志记录机制(我只是使用print打印所需的消息)如何获取所有打印并将其作为电子邮件发送出去?我是否必须将其全部保存在变量中并将其传递给smtplib?或者,还有更好的方法?
我有一个 python脚本,可以执行多项操作并在控制台上打印日志.现在,我还没有使用任何日志记录机制(我只是使用print打印所需的消息)如何获取所有打印并将其作为电子邮件发送出去?我是否必须将其全部保存在变量中并将其传递给smtplib?或者,还有更好的方法?

示例代码

for job in fetch.getJobStats():
        if job['userName']+"_"+job['tenantId'] in summaryTotal:
            summary = summaryTotal[job['userName']+"_"+job['tenantId']]
        else:
            summary = Summary(job['userName'],job['tenantId'])
            summaryTotal[summary.user+"_"+summary.tenant] = summary

        summary.jobs.append(Job(job['jobId'],job['jobStatus'],int(job['fileSize'])))
        totalBw += int(job['fileSize'])

    print("Cumulative Size: " + str(totalBw))
    for summaryKey in summaryTotal.keys():
        summary = summaryTotal[summaryKey]

        inprogress = []
        failed = []
        completed = []
        cancelled = []
        totalBwTenantUser = 0

        for job in summary.jobs:
            totalBwTenantUser += job.filesize
            if job.status == "JOBCANCELLED":
                cancelled.append(job.id)
            elif job.status == "JOBCOMPLETED":
                completed.append(job.id)
            elif job.status == "INPROGRESS":
                completed.append(job.id)
            elif job.status == "JOBFAILED":
                completed.append(job.id)

        print("-" * 50)
        print("Tenant: " + summary.tenant)
        print("User  : " + summary.user)
        print("Size    : " + str(totalBwTenantUser))
        print("n")
        print("INPROGRESS: " + str(inprogress))
        print("COMPLETED : " + str(completed))
        print("CANCELLED : " + str(cancelled))
        print("FAILED    : " + str(failed))
        print("-" * 50)

所有的印刷品都应该通过电子邮件拍摄.

解决方法

你真的应该使用Python附带的优秀 logging system.

将它与mailinglogger处理程序相结合,您就拥有了所需的一切:

import logging

from mailinglogger.SummarisingLogger import SummarisingLogger

handler = SummarisingLogger('from@example.com',('to@example.com',),subject='[LOGS] %s (hostname)s',mailhost='smtp.example.com')

logging.basicConfig(format='%(asctime)s %(message)s',datefmt='%m/%d/%Y %I:%M:%S %p',level=logging.INFO)
logger = logging.getLogger()
logger.addHandler(handler)

logging.info('Sent by email.')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读