您的位置:首页 > 编程语言 > Python开发

Python Web开发介绍(三) -mod_wsgi+web.py 如何打调试信息

2013-01-24 19:23 465 查看
做程序开发的,调试程序肯定要打log查看程序出错原因,要知道打出程序运行到某个点上某个量的值是多少,代码到底有没有跑到等等.

默认的,
出现了HTTP 500后,在C:\Program Files\Apache Software Foundation\Apache2.2\logs\error.log会打出程序最后出现错误的函数调用栈和异常原因,
可以通过这个来确定问题发生的地方.

但是知道哪里发生了问题有时还不够,我们还要知道为什么会发生这些问题,这时候就要我们手工增加一些调试语句,
随着程序运行,输出一些我们想知道的信息.

那么,
有哪些办法来调试呢?

1. print 'xxxxx'

在C:\Program Files\Apache Software Foundation\Apache2.2\logs\error.log文件中就会打出 [error] xxxxx 的调试语句了.
当然,可以配合’+’运算符输出更多的信息;需要调用前import sys

2. print >> sys.stderr, "xxxx"

效果同上;需要调用前import sys

这两个是最简单的方法,相信大家都会用这两种方法去做,尤其是第一种.

下面介绍一个借助第三方包的方法,这是我在研究python网站怎么打trace的时候走弯路发现的,一开始以为mod_wsgi没有自带调试方法,所以找了一个第三方包,
后来才发现上面的print语句就可以了.既然用过,就说一说吧.

这个工具就是wsgilog,一看名字就知道这个东东是用来打log的,呵呵.目前版本是0.3,可以从http://pypi.python.org/packages/source/w/wsgilog/wsgilog-0.3.zip下载,解压后cmd到解压后的目录,运行python
setup.py执行安装即可.

安装完后,在代码中我们这样使用:



from wsgilog import log

logger_middleware =log(tohtml=True, tofile='wsgi.log', tostream=True, toprint=True)

….

….

….

application = web.application(urls, globals()).wsgifunc(logger_middleware)

就是建立一个打log的中间件,并把这个中间件作为参数,传给web app初始化函数.

代码改动完成,如何使用呢?
有下面几个方法:

web.ctx.environ['wsgilog.logger'].info('xxxxx')
print >> web.ctx.environ['wsgi.errors'], "xxxxx"
print "xxxx" #跟系统调用方法一样哦

这三个方法的结果都一样,在C:\Program Files\Apache Software Foundation\Apache2.2\logs\error.log会打出log信息:

[Thu Jan 24 19:16:11 2013] [error] wsgilog.log: Thu, 24 Jan 2013 19:16:11 INFO This information is logged.

同时,在C:\Program Files\Apache Software Foundation\Apache2.2目录下会有一个wsgilog.log文件,调试信息也会输出至该文件:

wsgilog.log: Thu, 24 Jan 2013 19:16:11 INFO This information is logged.

据说, wsgilog有更强大的功能,看上面代码他的定义有一个tohtml=True,
貌似是说错误会通过html页面显示出来,不用去查服务器log文件了,不过这个功能怎么用呢,
我目前还没发现.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: