Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python日志,如何将信息写入2个单独的_Python_Logging - Fatal编程技术网

Python日志,如何将信息写入2个单独的

Python日志,如何将信息写入2个单独的,python,logging,Python,Logging,我正在尝试登录到不同的StringIOs。我本以为每个记录器都会写入实例化并提供给的每个StringIO。但这不起作用,只有第一个StringIO存储记录的信息。 对我遗漏的东西有什么建议吗 import logging from StringIO import StringIO formatter = logging.Formatter('%(asctime)s %(name)-3s %(levelname)-4s %(message)s') log_stre

我正在尝试登录到不同的StringIOs。我本以为每个记录器都会写入实例化并提供给的每个StringIO。但这不起作用,只有第一个StringIO存储记录的信息。 对我遗漏的东西有什么建议吗

    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(stream\u handler1)
。 您应该编写
log2.addHandler(stream\u handler2)

更改

log2.addHandler(stream_handler1)

完整代码:

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_handler2)

log1.info('log1')
log2.info('log2')
log2.addHandler(stream\u handler1)
更改为
log2.addHandler(stream\u handler2)
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_handler2)

log1.info('log1')
log2.info('log2')