2011-08-24 19 views
5

Pythonロギングフォーマッタで部分文字列フォーマットを実行する方法を探しています。フォーマッタに次のように定義しようとすると

は:私はTypeError例外を取得します
Pythonロギングフォーマッタの部分文字列フォーマット

formatter = logging.Formatter('[num-%d] %(levelname)s %(message)s' % (num,))

「をlevelname」を見つけることができませんでしたインタプリタとして妥当である「形式は、マッピングが必要です」と、 'メッセージ'。

もちろん、私は、 'levelname'と 'message'の両方を、ロギングフレームワークが処理するためにフォーマットされていないままにしておきたいと思います。

私は見ての通り、問題に対処する他の二つの方法があります:

  1. format = '[num-' + str(num) + '] %(levelname)s %(message)s' % (num,)
  2. format = '[num-%(num)d] %(levelname)s %(message)s' % dict(num=num, levelname='%(levelname)s', message='%(message)s')

は、しかし、私は両方のソリューションがやや醜い見つけて、私はそこに信じていますPythonで、またはPython組み込みログフレームワークで使用すると、文字列の一部だけをフォーマットするためのより良い方法でなければなりません。

すべてのアイデア?

+0

重複:http://stackoverflow.com/questions/4928526/python-format-string – Stefano

答えて

5

これを試してみてください:

formatter = logging.Formatter('[num-%d] %%(levelname)s %%(message)s' % (num,)) 

あなたは%(...)sフィールドでFormatter方法をあなたの文字列を与える必要があります。 %%%と解釈されるため、使用することができます。

+0

素晴らしい、ありがとう! – amito

関連する問題