即使我将调试设置为 True,有没有办法让 Django 通过电子邮件向我发送错误报告?
我在文档中没有看到任何内容。
编辑:
如果重要的话,我在 Django 1.2 上。不,这不是生产系统。
即使我将调试设置为 True,有没有办法让 Django 通过电子邮件向我发送错误报告?
我在文档中没有看到任何内容。
编辑:
如果重要的话,我在 Django 1.2 上。不,这不是生产系统。
如果您只有一封电子邮件,请确保列表中有逗号:
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,
},
}
}
你可能想看看django-sentry。它确实是为在生产中使用而设计的,但它也有TESTING
设置让它在什么时候工作DEBUG=True
。它实际上也可能在那时发送电子邮件——我自己还没有测试过,但它至少会保留一个错误日志,你可以随时从任何支持网络的设备查看。
此外,当您最终投入生产时,它将成为救命稻草。
只是为了扩展 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'
}
...
}
我相信您可以通过为与您在 settings.py 中定义的 AdminEmailHandler 关联的过滤器指定一个空列表来实现这一点。
例如:
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'filters': []
}
默认情况下,此类的过滤器将是 django.utils.log.RequireDebugFalse。
将以下行添加到您的 settings.py 文件中应该可以解决问题。
LOGGING['handlers']['mail_admins']['filters'] = []