很简单的代码主要用到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()
 
新闻热点
疑难解答