web-dev-qa-db-fra.com

logging.info n'apparaît pas sur la console, mais warn et error font

Lorsque je consigne un événement avec logging.info, il n'apparaît pas dans le terminal Python.

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

En revanche, les événements enregistrés avec logging.warn apparaissent dans le terminal.

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

Existe-t-il un changement de niveau d’environnement permettant d’imprimer logging.info sur la console? Je veux éviter d’apporter des modifications à chaque fichier Python.

43
daydreamer

L'enregistreur racine a toujours le niveau AVERTISSEMENT par défaut. Essayez d'appeler

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

et ça devrait aller.

77
Ztyx

Comme @ztyx a déclaré que le niveau de journalisation par défaut est AVERTISSEMENT. Vous devez le régler à un niveau inférieur

Vous pouvez le faire en utilisant logging.basicConfig et en configurant logger level :

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

Les solutions ci-dessus ne fonctionnaient pas pour moi, mais le code ici a:

# 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)

(J'ai omis des parties du code pour des raisons de lisibilité)

0
Orly