[英]How to list all existing loggers using python.logging module
Python 中有沒有辦法獲取所有已定義記錄器的列表?
我的意思是,是否存在諸如logging.getAllLoggers()
之類的會返回Logger
對象列表的東西?
我搜索了 python.logging 文檔,但找不到這樣的方法。
記錄器由logging.Manager
實例保存在層次結構中。 您可以在根記錄manager
上向manager
詢問它所知道的記錄器。
import logging
loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
調用getLogger(name)
可確保loggerDict
持有的任何占位符記錄器在添加到列表時完全初始化。
如果您還想在列表中包含 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 上測試
如果您嘗試檢查日志記錄對象的層次結構,我建議使用logging_tree.printout()
:
import logging_tree
logging_tree.printout()
或者,如果您想讓您的代碼可以訪問日志樹:
logging_tree.tree()
有關詳細信息,請參閱https://pypi.org/project/logging_tree/ 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.