如何记录所有打印语句

时间:2013-08-27 17:34:38

标签: python stdout

我的程序非常大,我希望记录所有的打印语句,以便我实现

F = open('testy.txt','w')
sys.stdout = F

if app.button_press() == True and app.return_data():
    data = app.return_data()
    main(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8])

F.close()

这是我以前使用一些打印语句的小程序,但是我猜这个程序有几百个,当我运行我的程序时它会冻结我认为它有很多打印语句并且发生内存溢出因此,如何将所有打印语句记录到.txt文件而不影响其功能?

1 个答案:

答案 0 :(得分:2)

您不应该使用print语句进行日志记录,也不应该在生产代码中重定向标准输出(或任何其他标准流)。相反,您应该使用logging模块来编写消息,并在您的情况下设置任何处理程序,可能是file handlerrotating file handler,您需要将日志消息记录到正确的地方。

如果您已经有太多现有代码打印日志消息一次重构,我建议实现logging,将其用于所有日志记录,设置一个类似文件的对象,将标准排除在外到logging捕获现有的日志消息,然后重构所有基于打印的日志记录。