【发布时间】:2013-03-27 05:16:57
【问题描述】:
我的应用程序在相当长的一段时间内管理多个对象(称为请求)的状态。每个请求都有一个唯一标识符,并经历不同的生命周期。随着时间的推移,系统中会出现新的请求。
我想为每个请求编写一个单独的日志文件。日志将跟踪该请求状态的每一个有趣的变化。因此,如果我想了解有关 Request X 历史的所有信息,只需查看 X.log。
显然,我可以使用纯文件手动推出解决方案。但我想用 Python 的日志框架来做到这一点。一种方法是为每个唯一请求创建一个新的记录器实例,将其配置为指向正确的文件,然后注销。但这感觉像是错误的解决方案。它创建了许多记录器,这些记录器不是垃圾收集的,而且也是无限的,因为新的请求将继续进入系统。
我希望有某种方法来配置单个记录器,也许使用自定义处理程序,以便我可以根据传入请求的 ID 将输出重定向到不同的文件。我查看了文档,但我看到的所有内容似乎都在传入记录级别工作,而不是操纵传出端点。
这可能吗?
【问题讨论】:
-
您的 Request 对象是如何离开系统的?似乎您可以为每个请求创建一个 Logger 对象,并进行适当配置,然后当您的请求停用时,它可以告诉 Manager(
logging.Manager子类?)删除 Logger 实例。 -
@Matt Anderson - 这可能是可能的。很难知道请求何时完成,但也许我可以想出一些办法。我不确定如何删除记录器实例。它们是
logging模块的模块范围,并且似乎没有任何清理API。del足够了吗?