Pythonロギングフォーマッターで部分的な文字列フォーマットを実行する方法を探しています。
フォーマッタを次のように定義しようとすると、次のようになります。
formatter = logging.Formatter('[num-%d] %(levelname)s %(message)s' % (num,))
インタプリタが「levelname」と「message」を見つけることができなかったので、「フォーマットにはマッピングが必要です」というTypeErrorが発生します。
もちろん、ロギングフレームワークが処理できるように、「levelname」と「message」の両方をフォーマットせずに残しておく必要があります。
私が見るように、問題に対処する他の2つの方法があります。
format = '[num-' + str(num) + '] %(levelname)s %(message)s' % (num,)
format = '[num-%(num)d] %(levelname)s %(message)s' % dict(num=num, levelname='%(levelname)s', message='%(message)s')
ただし、どちらの解決策もやや醜いものであり、Pythonで、またはpython組み込みのロギングフレームワークで使用して、文字列の一部のみをフォーマットするためのより良い方法があるはずだと思います。
何か案は?