将python打印语句转换为日志记录
我正在开发一个大型代码库,它使用print语句进行日志记录,而不是python日志记录。我想知道是否有建议将所有这些打印语句转换为对logging.info的调用?这些打印中的许多都分布在几行上,因此任何解决方案都需要处理这些情况,并且希望能够保持格式将python打印语句转换为日志记录,python,abstract-syntax-tree,rope,Python,Abstract Syntax Tree,Rope,我正在开发一个大型代码库,它使用print语句进行日志记录,而不是python日志记录。我想知道是否有建议将所有这些打印语句转换为对logging.info的调用?这些打印中的许多都分布在几行上,因此任何解决方案都需要处理这些情况,并且希望能够保持格式 我已经研究过python rope,但它似乎没有将调用转换为语句(如print)的功能。您可以使用2to3,只对print语句->print函数应用修复 2to3 --fix=print [yourfiles] # just d
我已经研究过python rope,但它似乎没有将调用转换为语句(如print)的功能。您可以使用
2to3
,只对print语句->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 .
只需在代码开始之前添加这几行代码,它就会记录打印的所有内容。我想你在找这样的东西
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."
我打赌您也可以直接修改
lib2to3
来添加自定义修复程序。这可能更简单。这看起来是一个完美的解决方案。谢谢这可能对某些人有所帮助,2to3工具需要-w开关来编写更改,命令是2to3--fix=print-w。
2to3工具也可以作为python工具包的一部分安装。如果您使用的是yum,那么yum安装python tools
就可以完成这项工作。-1这是一个难题,没有找到最终希望将打印更改为日志的真正原因(日志旋转、日志级别等功能)。logging.info()调用不仅仅是打印到文件。