回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我不会收到命令错误的邮件。在</p>
<pre><code>python deebate\manage.py test_logging_errors --settings=deebate.settings.local --traceback
</code></pre>
<p>命令:</p>
^{pr2}$
<p>很明显这会</p>
<pre><code>UnicodeEncodeError: 'ascii' codec can't encode character u'\xbb' in position 2: ordinal not in range(128)
</code></pre>
<p>我有<code>DEBUG = False</code></p>
<p>日志设置为</p>
<pre><code>LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
# I always add this handler to facilitate separating loggings
'debug_log_file':{
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(ROOT_PROJECT_INTERNAL, 'logs', 'debug.log'),
'maxBytes': '16777216', # 16megabytes
'backupCount': 10,
'formatter': 'verbose'
},
'warning_log_file':{
'level': 'WARNING',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(ROOT_PROJECT_INTERNAL, 'logs', 'warning.log'),
'maxBytes': '16777216', # 16megabytes
'backupCount': 10,
'formatter': 'verbose'
},
'django_log_file':{
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(ROOT_PROJECT_INTERNAL, 'logs', 'django.log'),
'maxBytes': '16777216', # 16megabytes
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins', 'django_log_file'],
'level': 'ERROR',
'propagate': True,
},
'core': {
'handlers': ['mail_admins', 'debug_log_file', 'warning_log_file'],
'level': 'DEBUG',
'propagate': True,
},
}
}
</code></pre>
<p>我还有哨兵。在</p>
<p><code>debug.log</code>和{<cd3>}由应用程序定期填充。在</p>
<p>我怎样才能抓住这个例外?为什么Django不明白?在</p>