2012-04-20 80 views
0

我是cgi和python的新手,所以我犯了不少错误。问题是,如果脚本出现问题,我只是在网页上发生500错误。我可以看到导致错误的唯一方法是通过ssh执行页面,但页面涉及文件上传,所以我无法测试该部分。在网站上记录python错误?

有没有一种方法可以将Python错误输出到文件中?

+0

查看服务器上的日志文件有什么问题? – sarnold 2012-04-20 21:39:52

回答

2

有几个选项,使用记录模块的指示,你可以尾巴服务器的错误日志,而且您可以用import cgitb; cgitb.enable()

取决于究竟发生错误cgitb,错误将显示在不同的地方,所以检查所有三个,并使用打印语句和异常块有助于调试您的代码。

通过文件上传,我发现我必须在表单标签中明确声明enctype="multipart/form-data",或者它通常会安静地打破。

+0

我还没有得到任何东西,除了500 – mowwwalker 2012-04-20 21:52:52

+0

那些应该肯定会显示在服务器错误日志中的一些信息。通常我发现我忘了通过打印“”“Content-type:text/html”“”或者有语法错误,如果前者,python可能不会引发任何异常,如果后者,它会显示日志类似于'File'/ usr/share/bdot/cgi/call',第15行 status,junk = commands.getstatusoutput('ssh [email protected] pwd ^ SyntaxError:EOL扫描字符串文字' – TaoJoannes 2012-04-20 22:01:38

+1

哇,我被推迟了,Filezilla改变了权限,所以我只好将它们改回来,一旦我做了,我故意破坏了代码来测试它,并且它能够工作,所以我会在下次尝试它,非常感谢! – mowwwalker 2012-04-20 22:06:31

1

是的。 Python有一个日志模块,它可以让你做你想做的事情。 Here你可以阅读文档,它很容易理解。

+0

发生错误时,仍然没有将任何内容打印到文件中。从ssh,教程中的消息进入文件,但是当我从浏览器中尝试页面时,我仍然只是得到500错误,文件中没有任何内容。 – mowwwalker 2012-04-20 21:48:44

+0

嗯,这不是神奇的。您需要使用日志记录模块和您想要查看的消息(可能是对异常的简要描述,可能是错误的完整跟踪)来记录错误。举例: '尝试: execute_function(个体经营)除例外 ,E: logging.error( '我发现了一个错误,我的主:\ n \ T |%S',E) ' – Omar 2012-04-20 21:54:45

+0

我设置为登录页面顶部并没有记录任何内容。 – mowwwalker 2012-04-20 21:58:17