2013年8月19日星期一

Python程序的日志顺序混乱

Python 2程序的日志打在文件里面,但是文件中日志出现的顺序和打印日志语句的执行顺序不一致,是混乱的。

研究发现,有的日志是用logging模块打出的,而有的用print语句打出。查看logging模块的源码,对stream输出,每次emit一条record,就会对stream进行flush。而print用的是系统默认的缓存方式,对没有tty的文件的输出,默认是块缓存。

程序启动时候用python -u就可以让stdinstdout不缓存了,应该就不会混乱了。

参考12

没有评论:

发表评论