【发布时间】:2010-11-23 08:32:52
【问题描述】:
我正在使用 web.py 0.3 / apache2 / mod_wsgi 并且 cgitb 模块似乎不能开箱即用(我仍然只是从 web.py 得到“内部服务器错误”并且通常的输出是 apache 的错误日志)。 web.py 安装指南建议了一个对我不起作用的解决方法 - 我可能会破解它来工作,但是我应该使用更好的东西(可能是为 web.py 或 wsgi 设计的)吗?
【问题讨论】:
我正在使用 web.py 0.3 / apache2 / mod_wsgi 并且 cgitb 模块似乎不能开箱即用(我仍然只是从 web.py 得到“内部服务器错误”并且通常的输出是 apache 的错误日志)。 web.py 安装指南建议了一个对我不起作用的解决方法 - 我可能会破解它来工作,但是我应该使用更好的东西(可能是为 web.py 或 wsgi 设计的)吗?
【问题讨论】:
在创建应用之前设置web.config.debug = True。这会启用调试错误,其中包含异常的堆栈跟踪以及本地值。
【讨论】:
在调试 apache2 和 web.py 时,通常最好在 apache 错误日志中捕获错误。例如,当您收到内部服务器错误时,这意味着您的应用程序无论出于何种原因都没有返回任何内容。
在 Linux 上,我只是在单独的终端中查看错误日志...
tail -f /var/log/apache2/error_log
或
tail -f /var/log/httpd/error_log
或取决于您的发行版。如果存在拼写错误或错误消息或其他错误,即使您在浏览器中收到内部服务器错误,您也会在错误日志中获得典型的 python 堆栈跟踪。
【讨论】:
缺乏 cgitb 也确实让我放慢了速度。这是为我做的:
尝试: 输出+=TroublesomeScript(etc)
除了: 进口追溯; 输出+=str(traceback.format_exc())
您可以根据需要美化输出,但这应该会为您提供调试所需的信息。也可以只输出sys.exc_info(),不过好像推荐使用traceback模块。
【讨论】: