Django调试模式下的错误报告邮件

5 投票
5 回答
2466 浏览
提问于 2025-04-16 20:12

有没有办法让Django在我把调试模式设置为开启(True)的情况下,给我发错误报告的邮件呢?

我在文档里没找到相关的信息。

补充说明:

我用的是Django 1.2,如果这有影响的话。 不,这不是一个生产环境的系统。

5 个回答

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'
        }
    ...
}
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,
        },
    }
}
4

你可以看看 django-sentry 这个工具。它主要是为了在正式环境中使用而设计的,但它有一个 TESTING 设置,可以在 DEBUG=True 的情况下也能正常工作。这个时候它可能会发送邮件,虽然我自己没有测试过,但至少它会记录错误日志,你可以随时通过任何能上网的设备查看这些日志。

而且,当你最终进入正式环境时,这个工具会非常有用,简直是救命稻草。

撰写回答