python - 在 Django 中使用大量的 try... except 来记录每个错误

标签 python django exception

我想检查代码的每一行或进程,如果不成功,则记录错误。像这样:

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/

相关文章:

python - 在 pyswarm 中选择初始位置(粒子群优化)

Python 线程垃圾回收

Django - 跳过数组的第一行

python - 如果我已经了解 Python 3,我该如何学习 Python 2?

c# - 如何处理通用返回 T 的异常

ios - 使用 NSNotifications 从 TableViewController 导航回 UIViewController

java - 在java中打开文件给出异常

python - 从列表中删除项目(如果存在)

javascript - 动态鹡鸰页面

python - Pandas 中分组字符串的累积和