编程是一门艺术

raptor.zh(at)gmail.com Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

archives 存档

01 Jan - 31 Dec 2017
01 Jan - 31 Dec 2016
01 Jan - 31 Dec 2015
01 Jan - 31 Dec 2014
01 Jan - 31 Dec 2013
01 Jan - 31 Dec 2012
01 Jan - 31 Dec 2011
01 Jan - 31 Dec 2010
01 Jan - 31 Dec 2009
01 Jan - 31 Dec 2008
01 Jan - 31 Dec 2007
01 Jan - 31 Dec 2006
01 Jan - 31 Dec 2005
01 Jan - 31 Dec 2004
01 Jan - 31 Dec 2003
01 Jan - 31 Dec 2002
01 Jan - 31 Dec 2001
01 Jan - 31 Dec 2000
01 Jan - 31 Dec 1999

--

links 链接

--

python的logging库

现在写程序是越来越不喜欢debuging了,因为太费事,基本上是以TDD为主。不过有时候TDD的反馈信息还是太粗糙了——只有通过或失败,最多就是发生异常时出来的一堆错误信息,很多时候是不够的。

正好最近在弄gevent,这玩意就是想debugging也不好弄,于是就试了一下python自带的logging库,虽然limodou老大早就写过,不过我觉得他那个用法还是不够方便,就看了一下帮助文档弄了个简单的。

先弄个配置模块设定logging的配置:

import logging
logconf = {}
logconf['filename'] = 'app.log'
logconf['filemode'] = 'w'
logconf['format'] = '%(asctime)s %(name)s %(levelname)s %(message)s'
logconf['level'] = logging.NOTSET

然后,一般一个应用不会就只有一个py文件的,总是一个主程序文件和一堆小模块,这时候要分别加logger的时候就很方便:

首先在主py文件里加上:

import logging
from logger import logconf
logging.basicConfig(**logconf)

然后在每个模块py文件里加上:

import logging
logger = logging.getLogger('py filename')

之后就可以在程序里使用:

logger.error("xxxxx %s"  % xxx)
logger.warning("xxxxx %s"  % xxx)
logger.info("xxxxx %s"  % xxx)
logger.debug("xxxxx %s"  % xxx)

进行logging了。

如果模块带测试的话,也可以这样:

if __name__ == "__main__":
    import unittest
    import logging
    from logger import logconf
    logging.basicConfig(**logconf)
    # test code...

相当的方便。

推送到[go4pro.org]

Trackback link:

Please enable javascript to generate a trackback url

No trackbacks

评论(2)

回复:

这几天我也是正在用gevent重写之前scrapy上写的spider,
谢谢你分享的模块!!

也谢谢你分享的这个logging debug的方法。

Oct.23-2012 by 疯象飙 --

回复:

呵呵,不客气。

Nov.07-2012 by 猛禽 () (URL) --


 
   
 
  表情图标 

 


提示: 除了 <b> 和 <i> 之外,其他的Html标签都将从您的评论中去除.url或mail地址会被自动加上链接.