您的位置:首页 > 编程语言 > Python开发

[python小记] logging模块SMTPhandler实现日志邮件报警

2018-01-10 16:18 746 查看
前言:一般开发中日志会输出到console,log file,mail中,上篇章简述了logging模块加载yaml配置输出到控制台和文件中logging模块yaml配置,本文会详述logging如何发送email,嗯

[1]最重要的是实现SMTPHanler的设置,简述一下:

The 
SMTPHandler
 class,
located in the 
logging.handlers
 module,
supports sending logging messages to an email address via SMTP.(该类在logging.handler中,支持通过SMTP协议发送日志到邮箱)

其中SMTP(Simple
Mail Transfer Protocol)即简单传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式,通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了

[2]参数解析如下(API详见Logging
handlers):

class 
logging.handlers.
SMTPHandler
(mailhost, fromaddr, toaddrs, subject, credentials=None, secure=None, timeout=1.0)

mailhost:指定的服务器,在这里笔者用的是smtp.163.com,port=25,两个参数使用tuple存放('smtp.163.com',25)

fromaddr:即发送人

toaddr:收件人,多个邮箱用list存储['test1@163.com','test2@163.com']

subject:邮件主题

credentials:凭证需要你的邮箱用户名和SMTP协议密码,可以自己设置,用户名密码也是以tuple形式存储('username','password') 注意:这里的密码不是邮箱登录密码



secure:指定的安全协议,可以不用设置  timeout:发送邮件的时间间隔

[3]代码如下:

errlog = logging.getLogger()
sh = logging.handlers.SMTPHandler(("smtp.163.com", 25), '****@163.com',
['46*****@qq.com', '*****@163.com'],
"logging from my app",
credentials=('******', '*****'),
)
errlog.addHandler(sh)
try:
a = 1 / 0
except:
errlog.warning("hha", exc_info=True)


[4]运行代码

qq和163邮箱分别收到邮件报警,搞定.



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SMTPHandler