2

値をログ メッセージに補間するためのベスト プラクティスはありますか? 私のgoogle-fuはここでは効果的ではありませんが、次のような例が得られます:

#Change all logging from this

logger.warning("This is a %s" % var)

#to

logger.warning("This is a %s", var)

誰もが従わなければならないベストプラクティスのように。理由はありますか?var(クラスのオブジェクトのような) の値はここで失敗しますか?

4

2 に答える 2

2

後者を使用してください。ロギング モジュールは、メッセージが処理されるときにのみ値を補間します。

これは、たとえば、ログ レベルでデバッグ メッセージが除外されている場合に、デバッグ メッセージの CPU サイクルを節約できることを意味します。

これは、loggingHOWTO の「最適化」の章に記載されています。

メッセージ引数のフォーマットは、回避できなくなるまで延期されます。

ロギングのためだけに高価な計算を避けるためにも、その章で与えられた残りのアドバイスに従うことをお勧めします。

内部的には、loggingモジュールは最初の形式を使用するため、文字列に変換できない値はすべて失敗します。

于 2013-02-25T12:08:20.373 に答える
1

warningロガーは、置換を行う前にレベルが有効になっているかどうかを確認する機会があるため、2 番目の形式の方が優れていると思います。

于 2013-02-25T12:08:13.703 に答える