Ich möchte Logger INFO-Nachrichten von meinem ganzen Code, aber nicht von 3rd-Party-Bibliotheken drucken. Dies wird an mehreren Stellen diskutiert, aber die vorgeschlagene Lösung funktioniert nicht für mich. Hier ist meine Simulation von externen Bibliothek, extlib.py
:Logger, um keine INFO von externen Bibliotheken anzuzeigen
#!/usr/bin/env python3
from logging import info
def f():
info("i am extlib f()")
Mein Modul:
#!/usr/bin/env python3
import logging
from logging import info
import extlib
logging.basicConfig(level=logging.INFO)
info("I am mymodule")
extlib.f()
Ausgang:
INFO: root: Ich bin mymodule
INFO: root: ich bin extlib f()
Mein Versuch INFO für lokale Modul nur zu aktivieren:
#!/usr/bin/env python3
import logging
from logging import info
import extlib
logging.getLogger(__name__).setLevel(logging.INFO)
info("I am mymodule")
extlib.f()
Ausgang: nichts
Wunsch Ausgabe:
INFO: root: Ich mymodule bin
Was bin Ich mache falsch?
1. Die Frage ist etwa libary anmelden, während Ihr Link verweist auf Ausgabeumleitung. 2. "Sie" benutzen die Logging-Bibliothek und in meinem Beispiel sind "sie" '' extlib.py'', die eindeutig die Logging-Bibliothek verwenden. – Muposat
ja? Ich verstehe das? Sie verwenden Funktionen aus der Logger-Bibliothek, anstatt die Logger-Klasse aus der Logger-Bibliothek zu verwenden. Das ist das Problem .... – bravosierra99
ein anderer Gedanke, haben Sie versucht, die Protokollierungsstufe zu ändern, bevor Sie ihren Code aufrufen? das könnte funktionieren. Habe jetzt keine Chance es zu testen. Sie können basicConfig nicht aufrufen, aber Sie können die Ebene direkt ändern – bravosierra99