gpt4 book ai didi

Python TimedRotatingFileHandler - 日志丢失

转载 作者:太空狗 更新时间:2023-10-30 00:00:10 26 4
gpt4 key购买 nike

我在 apache 环境中运行我的 python 应用程序并使用 timedRotatingFileHandler 进行记录。我以一种应该每天午夜轮换的方式设置记录器。我的所有进程都写入同一个记录器文件。不知何故,记录器有时会丢失记录信息。有时我看到记录器同时写入两个文件(旧文件和旋转文件)。

我无法理解为什么会这样? TimedrotatingFileHandler 不能在多进程环境中工作吗?如果不是,为什么会这样?

请帮助我理解..

最佳答案

您不能天真地从多个进程记录(和旋转)到同一个文件,因为操作系统不知道如何序列化来自 2 个不同进程的写入和旋转指令。您遇到的情况称为竞争条件,因为 2 个进程竞争写入同一个文件并关闭它并在轮换时同时使用新文件句柄打开。当您旋转时,只有 1 个进程会赢得一个新的文件句柄,因此这可以解释丢失的日志事件。

这是 Python 文档中的一个秘诀,其中包含有关如何登录到同一位置的提示。

http://docs.python.org/howto/logging-cookbook.html#logging-to-a-single-file-from-multiple-processes

本质上,您需要一个单独的进程来监听来自多个地方的日志记录事件,然后该进程会将事件记录到一个文件中。您也可以在该监听器进程中配置轮换。

如果你不确定如何写这个,你可以尝试使用像Sentry这样的包。或 Facebook 的 Scribe .我推荐 Sentry,因为 Scribe 的设置并不简单。

关于Python TimedRotatingFileHandler - 日志丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com