把traceback信息传递给字符串,并且发送给邮箱,traceback信息传递,很简单的代码主要用到tr


很简单的代码主要用到traceback的file参数imspect模块主要用于输出错误文件路径,方便查看错误出处应该需要配置 邮件发送服务器

[Python]代码

import osimport sysimport tracebackimport inspectimport datetimeimport smtplib, mimetypesfrom email.MIMEText import MIMETextclass 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()

评论关闭