Django通过电子邮件发送每次调用logging.error

时间:2014-08-03 07:15:04

标签: python django logging django-settings

有没有办法让Django电子邮件管理员了解每次logging.error的电话,类似于它向管理员发送有关未处理例外的电子邮件的方式?

请不要让我创建一个新的记录器,因为那时我必须更改数千个代码行。我希望能够找到settings.LOGGING的配置。

1 个答案:

答案 0 :(得分:3)

您可以尝试在django LOGGING设置中添加根记录器

...
'handlers': {
        'mail_admins': {
           'level': 'ERROR',
           'class': 'django.utils.log.AdminEmailHandler',
           'filters': ['special']
        },
        ...
}
'loggers': {
        '': {
            'level': 'ERROR',
            'handlers': ['mail_admins'],
        },
        'django.request': {
            ....
            'handlers': ['mail_admins', ...possible other handlers..],
            'propagate': False
        }
        ...
}

在上面的草图中,''记录器是根记录器,propagate可以设置为False,因为每个记录器已经使用mail_admins处理程序以避免重复电子邮件。

现在所有记录器也应该将事件发送到根记录器,如果发生错误,它将通过电子邮件发送给管理员。这个片段没有经过测试,但我相信答案就在于这些方面。