Falls Sie auf der Suche nach einer Möglichkeit sind, die Protokollierung eines beliebigen (möglicherweise tief verschachtelten) Moduls zu ändern, verwenden Sie logging.Logger.manager.loggerDict
um ein Wörterbuch mit allen Logger-Objekten zu erhalten. Die zurückgegebenen Namen können dann als Argument für logging.getLogger
:
import requests
import logging
for key in logging.Logger.manager.loggerDict:
print(key)
# requests.packages.urllib3.connectionpool
# requests.packages.urllib3.util
# requests.packages
# requests.packages.urllib3
# requests.packages.urllib3.util.retry
# PYREADLINE
# requests
# requests.packages.urllib3.poolmanager
logging.getLogger('requests').setLevel(logging.CRITICAL)
# Could also use the dictionary directly:
# logging.Logger.manager.loggerDict['requests'].setLevel(logging.CRITICAL)
Wie user136036 in einem Kommentar schrieb, zeigt diese Methode nur die Logger an, die zum Zeitpunkt der Ausführung des obigen Snippets vorhanden sind. Wenn zum Beispiel ein Modul einen neuen Logger erstellt, wenn Sie eine Klasse instanziieren, dann müssen Sie dieses Snippet einfügen nach die Klasse zu erstellen, um ihren Namen zu drucken.