如何解决使用 RotatingFileHandler 记录多个进程
我正在使用 multiprocessing 模块将许多 I/O 作业拆分到不同的进程中,但我遇到了从不同进程记录到同一日志文件的问题。 在寻找解决方案后,我将记录器中的文件集从普通 FileHandler 更改为 RotatingFileHandler。 在我的实验中(在开发环境中),它完美地工作并解决了问题,但我不确定这是一种可靠的方法。 有什么缺点吗?我应该注意些什么?
解决方法
不支持。来自 python logging cookbook:
虽然日志记录是线程安全的,并且从日志记录到单个文件 支持单个进程中的多个线程,记录到单个 不支持来自多个进程的文件,因为没有 跨多个序列化对单个文件的访问的标准方法 Python 中的进程。
之后,说明书建议使用单个套接字服务器进程来处理日志,而其他进程向其发送日志消息。 在 Sending and Receiving logging events across a network 部分中有一个这种方法的工作示例。
您可以制作一个 api 来接收您的日志并保存在一个文件中。或者你可以使用一个队列来存储你的日志,所有线程都在这个队列中放置了disered log,一个单独的进程读取它的队列将它写入一个文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。