将python print语句转换为日志记录

时间:2013-02-26 05:44:38

标签: python abstract-syntax-tree rope

我正在开发一个使用print语句进行日志记录而不是python日志记录的大型代码库。我想知道是否建议将所有这些print语句转换为对logging.info的调用?这些打印中的许多都分布在几行上,因此任何解决方案都需要处理这些情况,并希望能够保持格式化。

我已经研究过python rope但是似乎没有把调用转换为print这样的函数转换为函数调用的功能。

2 个答案:

答案 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."