当Debug = True时,Django错误报告电子邮件

时间:2011-06-24 12:09:50

标签: python django django-email django-errors

即使我将调试设置为True,有没有办法让Django给我发错误报告?

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

编辑:

如果重要的话,我会使用Django 1.2。 不,这不是一个生产系统。

5 个答案:

答案 0 :(得分:5)

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

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,
        },
    }
}

答案 1 :(得分:3)

您可能需要查看django-sentry。它实际上是为在制作中使用而设计的,但它设置为TESTING,以便在DEBUG=True时也可以使用。它实际上也可能在那时发送电子邮件 - 我自己没有测试过,但它至少会保存一个错误日志,您可以随时从任何支持Web的设备查看。

此外,当你最终投入生产时,它将是一个节省生命的人。

答案 2 :(得分:2)

为了扩展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'
        }
    ...
}

答案 3 :(得分:1)

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

例如:

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

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

答案 4 :(得分:0)

将以下行添加到settings.py文件中即可解决问题。

# Where csv is either a string or a file-like object (specifically, any object 
# with a read() method). If using a file, the data is streamed