如何将记录消息从多处理模块路由到文件?

时间:2012-03-22 13:09:08

标签: python file logging multiprocessing

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',但仅限于控制台。

如何将日志消息切换为文件?

1 个答案:

答案 0 :(得分:5)

多进程日志记录并非易事,但也不困难。您需要logging模块。

重点是让侦听器进程通过multiprocessing queues接收所有日志记录。然后,此侦听器进程将使用您决定使用的内部处理程序处理这些记录。在您的情况下,您可能想要使用FileHandler或类似的。

如果您使用的是Python 3.2或更高版本,则标准库中将同时包含QueueHandlerQueueListenerQuelistener是我之前讨论的侦听器进程(是的,它确实有start()方法)。

如果您使用的是以前的Python版本,请查看此link,它基本上显示了如何重写它们(以及如何使用它们)。


如果您需要官方文档中的参考文献,请查看Logging to a single file from multiple processes中的Logging Cookbook会话。

您可能还会对问题this answer

中的How should I log while using multiprocessing in Python?感兴趣