Python中有没有一种方法可以获得所有已定义的记录器的列表?我的意思是,是否存在像logging.getAllLoggers()这样的东西,它会返回Logger对象的列表?我搜索了python.logging文档,但找不到这样的方法。
logging.getAllLoggers()
Logger
vuktfyat1#
日志记录器由logging.Manager示例保存在一个层次结构中。您可以询问根日志记录器上的manager,以获取它所知道的日志记录器。
logging.Manager
manager
import logging loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
调用getLogger(name)可确保loggerDict持有的任何占位符记录器在添加到列表时都已完全初始化。
getLogger(name)
loggerDict
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上测试
qojgxg4l3#
如果你想检查日志对象的层次结构,我建议使用logging_tree.printout():
logging_tree.printout()
import logging_tree logging_tree.printout()
或者,如果你想让你的代码可以访问日志树:
logging_tree.tree()
有关详细信息,请参见https://pypi.org/project/logging_tree/。
3条答案
按热度按时间vuktfyat1#
日志记录器由
logging.Manager
示例保存在一个层次结构中。您可以询问根日志记录器上的manager
,以获取它所知道的日志记录器。调用
getLogger(name)
可确保loggerDict
持有的任何占位符记录器在添加到列表时都已完全初始化。os8fio9y2#
如果你也想在列表中包含RootLogger,请执行以下操作:
在Python 3.7.4上测试
qojgxg4l3#
如果你想检查日志对象的层次结构,我建议使用
logging_tree.printout()
:或者,如果你想让你的代码可以访问日志树:
有关详细信息,请参见https://pypi.org/project/logging_tree/。