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

前言:一般开发中日志会输出到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(mailhostfromaddrtoaddrssubjectcredentials=Nonesecure=Nonetimeout=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邮箱分别收到邮件报警,搞定.



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值