【问题标题】:How to route logging messages from the multiprocessing module to a file?如何将日志消息从多处理模块路由到文件?
【发布时间】:2012-03-22 13:09:07
【问题描述】:

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',但只发给控制台。

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

【问题讨论】:

  • 你查看logging.basicConfig的文档了吗?

标签: python file logging multiprocessing


【解决方案1】:

多进程日志记录并非微不足道,但也不难。您将需要 logging 模块。

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

如果您使用的是 Python 3.2 或更高版本,您将在标准库中同时拥有 QueueHandlerQueueListenerQuelistener 是我之前说的监听进程(是的,它确实有一个start() 方法)。

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


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

您可能也对this answer感兴趣,来自问题How should I log while using multiprocessing in Python?

【讨论】:

  • 感谢您的详细解答!
猜你喜欢
  • 2013-08-31
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多