我使用urlib来点击我的应用程序,而不是浏览器,所以当出现错误时,我看不到调试屏幕.将常规调试信息发送到控制台或文件的最佳方式是什么?

编辑:我已经捕捉到了页面的输出,但当我将其打印到屏幕上时,它充满了大量无用的html.我能知道错误吗?

推荐答案

更新-2016

这篇帖子的点击率仍然很高.

我建议使用以下使用内置日志(log)系统的方法之一.

与通过管道将异常传送到管理员邮箱处理程序的方式相同,您可以将数据发送到控制台记录器、文件记录器或任何其他地方(单独或附加于邮箱处理程序).

原始答案

嗯,最简单的方法是关闭调试模式,让Django通过邮箱向您发送错误,因为这确实需要5秒: http://docs.djangoproject.com/en/dev/howto/error-reporting/

否则,我会编写一个记录异常的中间件,但是如果您想要堆栈跟踪,这就有点麻烦了.Here's the documentation.

import traceback
import sys
from __future__ import print_function

class ProcessExceptionMiddleware(object):
    def process_exception(self, request, exception):
        # Just print the exception object to stdout
        print(exception)

        # Print the familiar Python-style traceback to stderr
        traceback.print_exc()

        # Write the traceback to a file or similar
        myfile.write(''.join(traceback.format_exception(*sys.exc_info())))

Django相关问答推荐

Django项目陷入登录页面

对象Django API中的对象

社工/社工简戈

通过 B 的外键列表访问模型 B 的行

表单集中的每个表单验证

Django 仅预取相关模型的最新对象

在 Django 模板中呈现标签名称而不是整数字段

- 不支持的操作数类型:DateField和DateField

在 settings.py 中指定 Django 测试数据库名称

Django 模板文件夹

Django基于类的视图上的success_url的反向抱怨循环导入

直接在模型类上使用 Django 管理器与静态方法

Django 视图 - 首先从调用应用程序的目录加载模板

在 Django 管理屏幕中删除添加另一个

始终将用户包含在 django 模板上下文中

django - 如何使翻译工作?

如何使用或使用 Django 的模型过滤系统?

在 django admin 中控制 TextArea 小部件的大小

如何在 Django 中创建一个非空的 CharField?

django/文件上传权限