私の現在のフォーマット文字列は次のとおりです。Pythonのログフォーマット文字列にカスタムフィールドを追加するにはどうすればいいですか?
formatter = logging.Formatter('%(asctime)s : %(message)s')
と私は、このフォーマッタが含まれている各スクリプトに別の値を持つことになりますAPP_NAMEと呼ばれる新しいフィールドを追加したいとどの。
import logging
formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')
syslog.setFormatter(formatter)
logger.addHandler(syslog)
しかし、私は、フォーマット文字列に補間するロガーにそのapp_name
値を渡しするかどうかはわかりません。私は明らかにそれをログメッセージに表示することができますが、毎回それを渡すが、これは乱雑です。私が試した
:
logging.info('Log message', app_name='myapp')
logging.info('Log message', {'app_name', 'myapp'})
logging.info('Log message', 'myapp')
が、どれも仕事。
本当にこれをすべての 'log'呼び出しに渡しますか?もしそうなら、「この機能はLogRecordに独自の値を注入するのに使うことができる」と言うところの[the docs](http://docs.python.org/3.3/library/logging.html#logrecord-objects)を見てください。 "しかし、これは' logger = logging.getLogger( 'myapp') 'を使用し、' logger.info'呼び出しに焼き込むことの主要なケースのようです。 – abarnert