it-swarm.com.de

logging.info wird nicht auf der Konsole angezeigt, aber warn und error tun

Wenn ich ein Ereignis mit logging.info protokolliere, wird es nicht im Python-Terminal angezeigt.

import logging
logging.info('I am info')  # no output

Im Gegensatz dazu werden mit logging.warn protokollierte Ereignisse im Terminal angezeigt.

import logging
logging.warn('I am warning')  # outputs "I am warning"

Gibt es eine Änderung der Umgebungsebene, mit der logging.info auf der Konsole gedruckt werden kann? Ich möchte vermeiden, dass Änderungen in jeder Python-Datei vorgenommen werden.

43
daydreamer

Der Root-Logger hat standardmäßig den WARNING-Level. Versuchen Sie anzurufen

logging.getLogger().setLevel(logging.INFO)

und es sollte dir gut gehen.

77
Ztyx

Wie @ztyx gesagt hat, dass der Standard-Logger-Level WARNING ist. Sie müssen eine niedrigere Stufe einstellen

Sie können dies tun, indem Sie logging.basicConfig und die Einstellung logger level verwenden:

logging.basicConfig(level=logging.DEBUG)
5
Vlad Bezden

Die oben genannten Lösungen funktionierten nicht für mich, aber der Code hier tat:

# set up logging to file
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    datefmt='%m-%d %H:%M',
                    filename='/temp/myapp.log',
                    filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# add the handler to the root logger
logging.getLogger('').addHandler(console)

(Ich habe aus Gründen der Lesbarkeit Teile des Codes ausgelassen.)

0
Orly