我想检查代码的每一行或进程,如果不成功,则记录错误。像这样:
try:
handle = open('file.txt', 'r+')
txt = handle.read()
except:
logger.info("SOME DESCRIPTION OF ERROR")
它有效,但似乎这个解决方案不是最好的方法。或者这是使用大量 try... except 语句的好方法?有替代解决方案吗?
最佳答案
首先。正如 @Bakuriu 所说,您必须避免使用裸露的 except
。
第二关。 Django(从 1.4 开始)附带了为您配置的日志记录。
看看https://docs.djangoproject.com/en/dev/topics/logging/ 。在生产中(即:DEBUG = False
),它将捕获每个异常并通过电子邮件发送给您。前提是您已在 settings.py
中正确设置了 ADMIN
键。
例如,这个记录器:
LOGGING = {
'version': 1,
'formatters':{ 'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'error_file': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'filename': 'errors.log',
'formatter': 'verbose'
},
},
'loggers': {
'django.request': {
'handlers': ['error_file'],
'level': 'INFO',
'propagate': False,
},
}
}
会将级别为 ERROR
及以上的所有内容记录到项目根目录下的 error.log 文件中。其中包括异常回溯和完整堆栈信息。
关于python - 在 Django 中使用大量的 try... except 来记录每个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21728181/