3

Python ロギングではなく、ロギングに print ステートメントを使用する大規模なコードベースに取り組んでいます。これらすべての print ステートメントを logging.info への呼び出しに変換するための推奨事項があるかどうか疑問に思っていますか? これらのプリントの多くは複数の行にまたがっているため、どのソリューションでもこれらのケースを処理する必要があり、できればフォーマットを維持する必要があります。

私はpythonロープを調べましたが、printのようなステートメントへの呼び出しを関数呼び出しに変換する機能がないようです。

4

2 に答える 2

3

printステートメントの修正のみを使用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 .
于 2013-02-26T05:56:10.393 に答える
1

コードを開始する前にこの数行を追加するだけで、印刷されるすべてのログが記録されます。あなたはこのようなものを探していると思います。

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."
于 2013-02-26T06:07:11.130 に答える