在Python docs I found that logging messages中可以使用多处理模块生成不同进程的python脚本。
import multiprocessing
import logging
logger = multiprocessing.log_to_stderr()
logger.setLevel(logging.INFO)
因此logger.warning('doomed')
会向我发送消息'doomed'
,但仅限于控制台。
如何将日志消息切换为文件?
答案 0 :(得分:5)
多进程日志记录并非易事,但也不困难。您需要logging
模块。
重点是让侦听器进程通过multiprocessing queues接收所有日志记录。然后,此侦听器进程将使用您决定使用的内部处理程序处理这些记录。在您的情况下,您可能想要使用FileHandler
或类似的。
如果您使用的是Python 3.2或更高版本,则标准库中将同时包含QueueHandler
和QueueListener
。 Quelistener
是我之前讨论的侦听器进程(是的,它确实有start()
方法)。
如果您使用的是以前的Python版本,请查看此link,它基本上显示了如何重写它们(以及如何使用它们)。
如果您需要官方文档中的参考文献,请查看Logging to a single file from multiple processes中的Logging Cookbook会话。
您可能还会对问题this answer
中的How should I log while using multiprocessing in Python?感兴趣