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

enxuqcxy  于 2023-03-24  发布在  Python
关注(0)|答案(3)|浏览(112)

Python中有没有一种方法可以获得所有已定义的记录器的列表?
我的意思是,是否存在像logging.getAllLoggers()这样的东西,它会返回Logger对象的列表?
我搜索了python.logging文档,但找不到这样的方法。

vuktfyat

vuktfyat1#

日志记录器由logging.Manager示例保存在一个层次结构中。您可以询问根日志记录器上的manager,以获取它所知道的日志记录器。

import logging

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

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

os8fio9y

os8fio9y2#

如果你也想在列表中包含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上测试

qojgxg4l

qojgxg4l3#

如果你想检查日志对象的层次结构,我建议使用logging_tree.printout()

import logging_tree

logging_tree.printout()

或者,如果你想让你的代码可以访问日志树:

logging_tree.tree()

有关详细信息,请参见https://pypi.org/project/logging_tree/

相关问题