3

Python ロギングを構成するために構成ファイルを使用しようとしていますが、dict 構成がロードされた後にハンドラーも追加しています。SO私の設定ファイルは

version: 1
formatters:
  default_formatter:
    format: '%(asctime)s : %(levelname)s : %(message)s'
    datefmt: '%d-%b-%Y %H:%M:%S'
  plain_formatter:
    format: '%(message)s'
handlers:  
  console_default_handler:
    class: logging.StreamHandler
    level: INFO
    formatter: default_formatter
    stream: ext://sys.stdout  
root:
  level: INFO
  handlers: [console_default_handler]

次に、コードで-私はします

log_config_dict=yaml.load(open(log_config_file, 'r'))
logging.config.dictConfig(log_config_dict)

そして、この方法でロガーを追加したい -

fhandler1=logging.FileHandler(log_file_name,mode="w")
fhandler1.setFormatter(log_config_dict['formatters']['plain_formatter'])
fhandler1.setLevel(logging.DEBUG)

これは機能していません。手動ログ構成で使用するために dictConfig で定義されたフェッチ値をキャッチする方法はありますか?

ありがとう

4

2 に答える 2

1

ああ、私はそれを理解しています。私がしなければならないことは

formatter =logging.Formatter(log_config_dict['formatters']['plain_formatter']['format'])             
fhandler1.setFormatter(formatter)

そのため、Formatter オブジェクトを作成する必要があります。

于 2012-12-10T17:45:40.750 に答える