如何使用 python.logging 模块列出所有现有的记录器

新手上路,请多包涵

Python 中有没有办法获取所有已定义记录器的列表?

我的意思是,是否存在诸如 logging.getAllLoggers() 类的东西,它会返回 Logger 对象的列表?

我搜索了 python.logging 文档,但找不到这样的方法。

原文由 mistiru 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
2 个回答

记录器由 logging.Manager 实例保存在层次结构中。您可以在根记录器上查询 manager 以获取它知道的记录器。

 import logging

loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]

调用 getLogger(name) 确保 loggerDict 持有的任何占位符记录器在添加到列表时被完全初始化。

原文由 Will Keeling 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您还想在列表中包含 RootLogger,请执行类似以下操作:

 import logging
loggers = [logging.getLogger()]  # get the root logger
loggers = loggers + [logging.getLogger(name) for name in logging.root.manager.loggerDict]

在 Python 3.7.4 上测试

原文由 Jonathan L 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题