5

即使我将调试设置为 True,有没有办法让 Django 通过电子邮件向我发送错误报告?

我在文档中没有看到任何内容。

编辑:

如果重要的话,我在 Django 1.2 上。不,这不是生产系统。

4

5 回答 5

6

如果您只有一封电子邮件,请确保列表中有逗号:

ADMINS = (('Admin', 'admin@my-domain.com'),)

我试过这些,似乎工作:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}
于 2014-08-10T17:39:08.143 回答
4

你可能想看看django-sentry。它确实是为在生产中使用而设计的,但它也有TESTING设置让它在什么时候工作DEBUG=True。它实际上也可能在那时发送电子邮件——我自己还没有测试过,但它至少会保留一个错误日志,你可以随时从任何支持网络的设备查看。

此外,当您最终投入生产时,它将成为救命稻草。

于 2011-06-24T15:42:03.310 回答
3

只是为了扩展 Bob Roberts 的回答,我在django.utils.log. 您可以将其复制并粘贴到您的设置中,命名它LOGGING,然后更改行:

# settings.py:
# copied from django.utils.log import DEFAULT_LOGGING
LOGGING = {
    ...
        'mail_admins': {
            'level': 'ERROR',
            # emails for all errors
            #'filters': ['require_debug_false'],
            'filters': [],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    ...
}
于 2016-02-26T21:06:49.387 回答
2

我相信您可以通过为与您在 settings.py 中定义的 AdminEmailHandler 关联的过滤器指定一个空列表来实现这一点。

例如:

'mail_admins': {
    'level': 'ERROR',
    'class': 'django.utils.log.AdminEmailHandler',
    'filters': []
}

默认情况下,此类的过滤器将是 django.utils.log.RequireDebugFalse。

于 2014-05-16T18:27:00.763 回答
0

将以下行添加到您的 settings.py 文件中应该可以解决问题。

LOGGING['handlers']['mail_admins']['filters'] = []
于 2019-01-28T19:35:30.840 回答