2

Python には、2 つの主な文字列フォーマット オプション%str.format. loggingモジュールには遅延機能があります。

logging.debug('The value is %s', huge_arg)

ログ行が印刷されない場合、これは文字列を構成しません。ただし、この機能は、文字列が古いスタイルの%形式を使用している場合にのみ機能します。str.formatこの遅延機能を使用する方法はありますか? 次のような名前付き引数が存在する可能性があります。

logging.debug('The value is {}', fmt_arg=(huge_arg))
4

2 に答える 2

3

TimBotと矛盾するのは少し怖いですが、別の答えがあります:-)

ロギング モジュールは % 形式を使用します。これは、Python での {} 形式の出現 (2.3、2.6 でlogging登場str.format) よりも古いためです。次の理由により、ロギングは {} 形式に変換されていません。

  1. サードパーティのライブラリやアプリケーションの多くの既存のコードを壊さずに切り替えることはできないため、% 形式はそのままです。
  2. {} フォーマットが登場したとき、% フォーマットよりも少し遅くなりました (私の知る限り、出力をより細かく制御できますが、まだそうです)。人々はロギングをそのままオーバーヘッドと見なし、そのオーバーヘッドに追加することを気にしません。 -)
  3. 2010 年のこの投稿で説明されているように、{} 形式や $ スタイルの形式 ( ) も既にサポートさています。説明されているアプローチは、ロギングの遅延フォーマットをサポートしています。string.Template
于 2013-10-19T16:23:28.333 に答える