複数のことを実行し、コンソールにログを出力する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に付属している優れたロギングシステムを実際に使用する必要があります。
それをmailinglogger
ハンドラーと組み合わせると、必要なものがすべて揃っています。
import logging
from mailinglogger.SummarisingLogger import SummarisingLogger
handler = SummarisingLogger('[email protected]',
('[email protected]',),
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.')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加