我尝试过用 Python 登录。看起来一旦线程创建了日志记录实例,它就不会被删除。但是,我的程序每分钟应该产生超过 100 个线程,并且每个线程都会创建自己的记录器,这可能会导致某种内存泄漏(垃圾收集器不会收集 logging.Logger
实例) )。
任何人都可以帮助我吗?有没有办法将记录器用于多线程应用程序?
最佳答案
在 python logging
模块中,记录器由 logging.Manager
实例管理。通常只有一个日志管理器,可用作 logging.Logger.manager
。记录器通过其名称进行识别。每次使用 logging.getLogger('name')
时,此调用都会实际转发到 logging.Logger.manager.getLogger
,它保存记录器的字典并返回相同的记录器每次都针对每个'name'
。
因此,如果您在从线程获取记录器时不使用不同的名称,则实际上每次都使用相同的记录器实例,并且不必担心内存泄漏。
关于python - 每个线程创建自己的记录器实例,记录自己的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651801/