有没有办法在Python中配置SMTPHandler来做更多高级的东西?

Hon*_*rek 6 python logging smtp exception-handling

我使用标准的SMTPHandler记录器来捕获我的Python异常.有没有办法将异常名称放入邮件主题?它会比使用静态主题好得多,因为Gmail(而不仅仅是Gmail)可以根据主题对对话进行分组,因此可以根据错误类型对其进行分组.

例如,如果50个完全相同的错误发生+ 1个不同,我会在我的收件箱中看到两个对话,而不是包含51个电子邮件的1个组,我可以很容易地忽略单个不同的对话.

另外,有没有办法防止发送仍然相同的错误?E. g.以某种方式定义我自己的功能决定是否要发送电子邮件.该函数将在params中获取一些基本信息,以便它可以决定(例如缓存并查看是否已发送此类问题).

我浏览了文档,但我找不到那样的东西.这似乎很简单.如果SMTPHandler无法做到这一点,那么最好还是简单的替代方案是什么?任何整洁的图书馆?

谢谢!

Phi*_*per 7

您只需要创建自己的SMTPHandler子类.

对于您的第一个请求:您只需要覆盖该 getSubject(record)方法.至于您可以在主题中添加什么,请在help(Formatter)从日志记录导入Formatter后查看.

对于第二个请求:您必须覆盖该emit(record)方法.检查记录并自行决定是否应该发送.如果是这样,那么只需调用该super(SMTPHandler,self).emit(record)方法.

class MySMTPHandler(SMTPHandler):

    def getSubject(self, record):
        return "My Error Format from the record dict"

    def emit(self, record):
        #check for record in self.already_send or something
        if sendit:
           super(MySMTPHandler,self).emit(record)
Run Code Online (Sandbox Code Playgroud)