在设置文件中,我设置了一个记录器来将任何错误发送到ADMINS
,这是默认行为。这里:
LOGGING = {
'handlers': {'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler'}
'loggers': {'django.request': {'handlers': ['mail_admins'], 'propagate': True}}
}
但我想设置第二个记录器来记录不同类型的错误和电子邮件应该发送到不同的地址。
我有自己的日志记录功能,可以写入文件。基本上我想发送一封电子邮件到另一个地址。我该怎么做呢?
发布于 2019-09-16 08:43:14
我不知道它会不会起作用。你可能想要重写Django 'AdminEmailHandler
‘类。
尝试像这样重写
from project import settings
from django.utils.log import AdminEmailHandler
from django.core.mail.message import EmailMultiAlternatives
class CustomEmailHandler(AdminEmailHandler):
def mail_extra_people(self, subject, message, fail_silently=False, connection=None,
html_message=None):
"""Sends a message to the extra people, as defined by the EXTRA_PEOPLE setting."""
if not settings.EXTRA_PEOPLE:
return
mail = EmailMultiAlternatives(
'%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject), message,
settings.SERVER_EMAIL, [a[1] for a in settings.EXTRA_PEOPLE],
connection=connection,
)
if html_message:
mail.attach_alternative(html_message, 'text/html')
mail.send(fail_silently=fail_silently)
def send_mail(self, subject, message, *args, **kwargs):
self.mail_extra_people(subject, message, *args, connection=self.connection(), **kwargs)
并将您的日志更改为
LOGGING = {
'handlers': {
'mail_extra_people': {
'level': 'ERROR',
'class': 'project.myutils.CustomEmailHandler',
},
},
'loggers': {
'django.request': {
'handlers': ['mail_extra_people'],
'level': 'ERROR',
'propagate': True,
},
}
}
这会将邮件发送到项目设置中的EXTRA_PEOPLE
中提到的邮件in
https://stackoverflow.com/questions/57952327
复制相似问题