私は別のStringIOにログを記録しようとしています。私は、各ロガーがインスタンス化されて与えられた各StringIOに書き込むことを期待していました。しかし、それは動作していません、最初のStringIOだけがログに記録された情報を格納します。 私は何が欠けている?Pythonのロギング、2つの別に情報を書き込む方法
import logging
from StringIO import StringIO
formatter = logging.Formatter('%(asctime)s %(name)-3s %(levelname)-4s %(message)s')
log_stream1 = StringIO()
log1 = logging.getLogger('a')
log1.setLevel(logging.DEBUG)
stream_handler1 = logging.StreamHandler(log_stream1)
stream_handler1.setLevel(logging.INFO)
stream_handler1.setFormatter(formatter)
log1.addHandler(stream_handler1)
log_stream2 = StringIO()
log2 = logging.getLogger('b')
log2.setLevel(logging.DEBUG)
stream_handler2 = logging.StreamHandler(log_stream2)
stream_handler2.setLevel(logging.INFO)
stream_handler2.setFormatter(formatter)
log2.addHandler(stream_handler1)
log1.info('log1')
log2.info('log2')
出力:
In [6]: log_stream1.getvalue()
Out[6]: '2017-06-08 10:05:12,468 a INFO log1\n2017-06-08 10:05:12,468 b INFO log2\n'
In [7]: log_stream2.getvalue()
Out[7]: ''
変更 'log2.addHandler log2.addHandler(stream_handler2)'へ(stream_handler1) '' –