很簡單的代碼主要用到traceback的file參數imspect模塊主要用于輸出錯誤文件路徑,方便查看錯誤出處應該需要配置 郵件發送服務器
[Python]代碼
- import os
- import sys
- import traceback
- import inspect
- import datetime
- import smtplib, mimetypes
- from email.MIMEText import MIMEText
- class MailSender(object):
- '''
- 向郵箱發送錯誤信息
- 用法:MailSender().SendMail(receiverlist, sub = 'AntiFraud ERROR', content= 'Error info')
- '''
- def __init__(self):
- self.frm = "******@***.***"
- self.message = '' # restore the info of traceback
- self.errFilePath = ''
- def write(self, str):
- '''
- 把traceback信息存儲必須的函數
- '''
- self.message += str
- def __getContent(self):
- '''
- 得到traceback信息
- '''
- traceback.print_exc(file = self)
- def __getReceiverList(self, receivers) :
- '''
- 得到收件人列表
- '''
- if isinstance(receivers, list):
- return ';'.join(receivers)
- return receivers
- def __getErrFilePath(self):
- '''
- 得到發生error的文件的路徑
- '''
- n = len(inspect.stack())
- current_file = inspect.stack()[n-1][1]
- return os.path.abspath(current_file)
- def sendMail(self, receiver, sub = 'ERROR sub', content= 'Error info'):
- '''
- 發送郵件
- '''
- receiverlist = self.__getReceiverList(receiver)
- self.__getContent()
- self.errFilePath = self.__getErrFilePath()
- content = ">>>%s<<<%s%s%s%s" % (content, '/nin: ',str(self.errFilePath), '/n', self.message)
- try:
- msg = MIMEText(content)
- msg['From'] = self.frm
- msg['To'] = receiverlist
- msg['Subject'] = sub
- smtp_server = smtplib.SMTP('localhost')
- smtp_server.sendmail(self.frm, receiver, msg.as_string())
- smtp_server.quit()
- except Exception, ex:
- print 'Error when sending email'
- raise ex
- #
- def test():
- receiver = ['*****@126.com']
- mm = MailSender()
- try:
- a = int('')
- except Exception, ex:
- #sub = 'Error'
- #content = 'ERror when program running'
- mm.sendMail(receiver)
- if __name__ =='__main__':
- test()
新聞熱點
疑難解答