Wenn ich ein Ereignis mit protokolliere logging.info
, wird es nicht im Python-Terminal angezeigt.
import logging
logging.info('I am info') # no output
Im Gegensatz dazu werden mit protokollierte Ereignisse logging.warn
im Terminal angezeigt.
import logging
logging.warn('I am warning') # outputs "I am warning"
Kann ich die Umgebungsebene ändern, um logging.info
auf der Konsole zu drucken? Ich möchte vermeiden, Änderungen an jeder Python-Datei vorzunehmen.
getLogger()
angeben, erhalten Sie den Root-Logger zurück. Solange Sie die anderen Logger nicht ändern, müssen Sie nur den Root-Logger ändern.Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
>>> import logging
>>> rootLog = logging.getLogger()
>>> rootLog.setLevel(logging.INFO)
>>> rootLog.info('all the kings horses')
>>> rootLog.warning('all the kings men')
all the kings men
Wie @ztyx sagte, ist die Standard-Logger-Ebene WARNUNG. Sie müssen es auf eine niedrigere Ebene einstellen
Sie können dies tun, indem Sie logging.basicConfig verwenden und die Logger-Ebene festlegen :
quelle
basicConfig()
es bei mir nicht funktioniert, obwohl eslogging.getLogger().setLevel()
angemessen funktioniert.Die oben genannten Lösungen haben bei mir nicht funktioniert, aber der Code hier hat funktioniert:
(Ich habe Teile des Codes aus Gründen der Lesbarkeit weggelassen.)
quelle
logging.error("Connection timed out!")
und selbst mit derlevel=logging.DEBUG
inbasicConfig()
, es würde nicht auf Konsole gedruckt. Das Hinzufügen des Handlers hat es getan, vielen Dank !!basicConfig
oder über INFO setze, protokolliert der Konsolenlogger niemals etwas. Wenn ich weglasse, kann ich den ganzen Tag einen LoggerbasicConfig
anrufensetLevel
(und ich kann sehen, wie sich das Level ändert, indemgetEffectiveLevel
ich anrufe ), aber es wird niemals etwas unter demWARNING
Level protokollieren . Ich bin mir nicht sicher, ob das nicht das richtige Verhalten ist, aber es ist nicht das, was ich erwartet hatte.