缺少Python TimeDrotingFileHandler日志

2024-06-17 15:23:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不明白为什么会这样?多时间文件处理程序不工作?如果不是为什么?在

请帮助我理解。。在


Tags: 文件信息应用程序处理程序进程apache方式记录
1条回答
网友
1楼 · 发布于 2024-06-17 15:23:51

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

下面是Python文档中的一个方法,其中包含如何登录到同一个位置的提示。在

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

实际上,您希望有一个单独的进程监听来自多个地方的事件日志,然后该进程将事件记录到单个文件中。您也可以在侦听器进程中配置旋转。在

如果您不确定如何编写,可以尝试使用Sentry或Facebook的{a3}等包。我推荐哨兵,因为抄写员的设置并不简单。在

相关问题 更多 >