首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >设置记录器将电子邮件发送到与管理员不同的地址

设置记录器将电子邮件发送到与管理员不同的地址
EN

Stack Overflow用户
提问于 2019-09-16 15:39:58
回答 1查看 114关注 0票数 0

在设置文件中,我设置了一个记录器来将任何错误发送到ADMINS,这是默认行为。这里:

代码语言:javascript
代码运行次数:0
运行
复制
LOGGING = {
  'handlers': {'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler'}
  'loggers': {'django.request': {'handlers': ['mail_admins'], 'propagate': True}}
}

但我想设置第二个记录器来记录不同类型的错误和电子邮件应该发送到不同的地址。

我有自己的日志记录功能,可以写入文件。基本上我想发送一封电子邮件到另一个地址。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2019-09-16 16:43:14

我不知道它会不会起作用。你可能想要重写Django 'AdminEmailHandler‘类。

尝试像这样重写

代码语言:javascript
代码运行次数:0
运行
复制
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)

并将您的日志更改为

代码语言:javascript
代码运行次数:0
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57952327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档