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 将日志记录与多处理结合使用_Python_Logging_Multiprocessing - Fatal编程技术网

Python 将日志记录与多处理结合使用

Python 将日志记录与多处理结合使用,python,logging,multiprocessing,Python,Logging,Multiprocessing,我试图在不同进程之间创建一个日志流,但只有主进程使用该流,子进程使用sys.stdout,我如何修复它 这是我的代码: import functools import io import logging import multiprocessing def log(message, logger): logger.warning(msg=message) def main(): stream = io.StringIO() logger = multiproces

我试图在不同进程之间创建一个日志流,但只有主进程使用该流,子进程使用
sys.stdout
,我如何修复它

这是我的代码:

import functools
import io
import logging
import multiprocessing


def log(message, logger):
    logger.warning(msg=message)


def main():
    stream = io.StringIO()
    logger = multiprocessing.get_logger()
    handler = logging.StreamHandler(stream=stream)
    handler.setFormatter(fmt=logging.Formatter(fmt='%(asctime)s | %(processName)s | %(message)s'))
    logger.addHandler(hdlr=handler)
    log(logger=logger, message='main')
    with multiprocessing.Pool(processes=2) as pool:
        pool.map(func=functools.partial(log, logger=logger), iterable=['msg1', 'msg2'])
    print(stream.getvalue())


if __name__ == '__main__':
    main()