2013-02-26 65 views
3

我正在處理一個使用print語句進行日誌記錄而非python日誌記錄的大型代碼庫。我想知道是否有建議將所有這些打印語句轉換爲對logging.info的調用?許多這些印刷品分佈在多行,因此任何解決方案需要處理這些情況,並希望保持格式。將python打印語句轉換爲日誌記錄

我已經看着python繩索,但似乎沒有設施將調用轉換爲像打印語句到函數調用。

回答

3

您可以使用2to3只有適用於打印語句 - >打印功能的修復。

2to3 --fix=print [yourfiles] 

這應該自動處理所有那些奇怪的情況,然後將打印功能,記錄功能應該是一個簡單的查找和替換,例如,sed

+0

我敢打賭,你也可以直接修改'lib2to3'來添加一個自定義修復程序。這可能更直接。 – nneonneo 2013-02-26 08:15:20

+0

這看起來像一個完美的解決方案。謝謝! – 2013-02-26 15:42:52

+1

這可能會幫助某人,2to3工具需要-w切換寫入更改,命令是'2to3 --fix = print -w .'另外,可以將2to3工具作爲python-tools軟件包的一部分進行安裝。如果你使用yum,那麼'yum install python-tools'完成這項工作。 – opensourcegeek 2013-11-13 14:18:37

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." 
+0

-1這是一個kludge,並且錯過了最終希望將打印更改爲日誌記錄的功能(日誌輪轉,日誌記錄級別等功能)。 logging.info()調用不僅僅是打印到文件。 – wim 2013-02-26 15:07:06