即使我将调试设置为True,有没有办法让Django给我发错误报告?
我在文档中没有看到任何内容。
编辑:
如果重要的话,我会使用Django 1.2。 不,这不是一个生产系统。
答案 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