Although logging is thread-safe, and logging to a single file from
multiple threads in a single process is supported, logging to a single
file from multiple processes is not supported, because there is no
standard way to serialize access to a single file across multiple
processes in Python.
最简单的方法是使用自定义的日志处理程序,它将所有带有队列的日志从子进程传递到主进程,然后在主进程中记录它。例如,以这种方式在客户机应用程序上工作日志,其中有主UI线程和工作线程。
同样在POSIX系统上,您可以使用附加模式的日志记录。高达4kb将是原子的。
解决这个问题的一个糟糕的解决方案是创建一个日志进程,它监听一个套接字,监听一个线程,只输出它接收到的任何内容
关键是劫持套接字队列作为仲裁机制。
为了测试它:
然后像这样使用:
并通过以下方式监视最近的活动:
任何给定进程中的每个日志条目都将以原子方式发出。将其添加到标准日志系统中不应该太难。使用套接字意味着多台计算机还可以针对一个日志,该日志托管在专用计算机上。
不,不支持。来自pythonlogging cookbook:
之后,cookbook建议使用单个socket服务器进程来处理日志,而其他进程则向其发送日志消息。 在Sending and Receiving logging events across a network一节中有一个这种方法的工作示例。
相关问题 更多 >
编程相关推荐