可以删除python记录器的子项吗?

时间:2015-07-06 16:48:19

标签: python multithreading logging

我在python中编写框架来实现一些服务器。它们连续运行,等待作业,当发现一个或多个时,它们可以处理它,启动一个或多个线程来处理它,或者启动一个子进程来处理它。在查找作业日志时,数据应该放入一个文件中,该文件将每天轮换。每个作业的日志数据将进入一个单独的作业日志文件,其名称基于作业ID。

这是我第一次尝试使用python日志记录。什么是"权利"这样做的方法?一种想法是为每个作业添加一个子记录器,但似乎没有办法删除子记录器(我认为通过修复库代码并不难做到,但我认为没有remove_child( )方法的原因)。

我想到的另一种方法是为每个作业设置一个处理程序,并根据当前线程为每个作业提供一个过滤器。这样,所有处理程序都将被过滤掉,除了活动线程中的那个,它将记录到作业日志文件中。这种方式很容易在处理完成后删除处理程序。这可能会有用 - 我希望任何工作都不会超过10个主动,所以为每个工作运行一个过滤器并不困难。这是最好的方法吗?或者是我还没有想到的其他东西?

1 个答案:

答案 0 :(得分:1)

记录器与您的应用程序中的区域/代码中的位置有关,因此添加和删除记录器并没有多大意义。您使用处理程序为每个作业和过滤器描述的方法可以确保消息只记录到一个文件中,并且您在第三方库中调用的任何代码也会将其消息定向到适当的位置。虽然不是完全相同的情况,但我在this post中描述了这对于另一个多线程场景 - 网络应用程序是如何工作的。