我尝试使用Python登录。看起来,一旦线程创建了一个日志记录实例,它就不会被删除。但是,我的程序应该每分钟生成100个以上的线程,并且每个都会创建自己的记录器,这可能会导致一种内存泄漏(垃圾收集器不会收集logging.Logger
个实例)。
任何人都可以帮助我吗,有没有办法将记录器用于多线程应用程序?
答案 0 :(得分:2)
在python logging
模块中,记录器由logging.Manager
实例管理。通常只有一个日志记录管理器,可用logging.Logger.manager
。记录器由其名称标识。每次使用logging.getLogger('name')
时,此调用都会被转发到logging.Logger.manager.getLogger
,其中包含记录器的字典,并且每次都为每个'name'
返回相同的记录器。
因此,如果从线程获取记录器时不使用其他名称,则实际上每次都使用相同的记录器实例,而不必担心内存泄漏。