首页 > 解决方案 > 使用 RotatingFileHandler 从多个进程记录

问题描述

我正在使用多处理模块将许多 I/O 作业拆分到不同的进程中,我遇到了从不同进程记录到同一个日志文件的问题。在寻找解决方案后,我将记录器中的文件集从普通 FileHandler 更改为 RotatingFileHandler。在我的实验中(在开发环境中),它完美地工作并解决了问题,但我不确定它是否是一种可靠的方法。有什么缺点吗?我应该注意什么?

标签: pythonpython-multiprocessingpython-logging

解决方案


不,不支持。从 python日志记录食谱

虽然日志记录是线程安全的,并且支持在单个进程中从多个线程记录到单个文件,但不支持从多个进程记录到单个文件,因为没有标准方法可以跨多个进程序列化对单个文件的访问Python 中的进程。

之后,食谱建议使用单个套接字服务器进程来处理日志和向其发送日志消息的其他进程。在通过网络发送和接收日志事件部分中有一个这种方法的工作示例。

您可以制作一个 api 来接收您的日志并保存在文件中。或者你可以使用一个队列来存储你的日志所有线程都将disered日志放入这个队列中,一个读取其队列的单独进程将其写入文件。


推荐阅读