簡體   English   中英

如何使用 python.logging 模塊列出所有現有記錄器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM