我正在开发一个使用print语句进行日志记录而不是python日志记录的大型代码库。我想知道是否建议将所有这些print语句转换为对logging.info的调用?这些打印中的许多都分布在几行上,因此任何解决方案都需要处理这些情况,并希望能够保持格式化。
我已经研究过python rope但是似乎没有把调用转换为print这样的函数转换为函数调用的功能。
答案 0 :(得分:3)
您可以使用2to3
而仅将修复程序应用于print语句 - >打印功能。
2to3 --fix=print [yourfiles] # just displays the diff on stdout
2to3 --fix=print [yourfiles] --write # also saves the changes to disk
这应该会自动处理所有这些奇怪的情况,然后将打印功能转换为记录功能应该是一个简单的查找和替换,例如sed
。
如果由于某种原因没有2to3
脚本的快捷方式,请改为运行lib2to3
作为模块:
python -m lib2to3 --fix=print .
答案 1 :(得分:0)
在代码启动之前添加这几行,它会记录它打印的所有内容。我想你正在寻找这样的东西。
import logging
import sys
class writer :
def __init__(self, *writers) :
self.writers = writers
def write(self, text) :
logging.warning(text)
saved = sys.stdout
sys.stdout = writer(sys.stdout)
print "There you go."
print "There you go2."