有没有办法让Django电子邮件管理员了解每次logging.error
的电话,类似于它向管理员发送有关未处理例外的电子邮件的方式?
请不要让我创建一个新的记录器,因为那时我必须更改数千个代码行。我希望能够找到settings.LOGGING
的配置。
答案 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
处理程序以避免重复电子邮件。
现在所有记录器也应该将事件发送到根记录器,如果发生错误,它将通过电子邮件发送给管理员。这个片段没有经过测试,但我相信答案就在于这些方面。