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

可以删除python记录器的子级吗?,python,multithreading,logging,Python,Multithreading,Logging,我正在用python编写一个框架来实现一些服务器。它们连续运行,等待作业,当发现一个或多个作业时,它们可以处理作业,启动一个或多个线程来处理作业,或者启动子进程来处理作业。当它正在寻找一个工作日志数据应该进入一个文件,这将每天轮换。每个作业的日志数据将进入一个单独的作业日志文件,其名称基于作业ID 这是我第一次真正尝试使用python日志记录。“正确”的方法是什么?一种想法是为每个作业添加一个子记录器,但似乎没有删除子记录器的方法(我认为修改库代码并不难,但我认为没有remove_child()

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

这是我第一次真正尝试使用python日志记录。“正确”的方法是什么?一种想法是为每个作业添加一个子记录器,但似乎没有删除子记录器的方法(我认为修改库代码并不难,但我认为没有remove_child()方法是有原因的)


我考虑的另一种方法是为每个作业设置一个处理程序,并根据当前线程为每个作业提供一个过滤器。这样,除活动线程中的处理程序外,所有处理程序都将被过滤掉,该线程将记录到作业日志文件中。这种方法很容易在处理程序完成后删除它们。这可能会起作用——我预计任何作业一次活动的线程不会超过10个,因此为每个作业运行一个过滤器并不难。这是最好的方式吗?或者是我没有想到的其他东西?

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