El registro setLevel está siendo ignorado

El código de abajo se copia de la documentación. Se supone que puedo ver todos los registros de información. Pero yo no. Solo puedo ver el aviso y más arriba aunque haya establecido setLevel en INFO.

¿Por qué está pasando esto? foo.py :

 import logging logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message') 

Salida:

 workingDirectory$ python foo.py warn message error message critical message 

¿A dónde fueron los mensajes de información y depuración?

Reemplazar la linea

 logger.setLevel(logging.DEBUG) 

con

 logging.basicConfig(level=logging.DEBUG, format='%(message)s') 

y debería funcionar como se espera. Si no configura el registro con ningún manejador (como en su publicación, solo configura un nivel para su registrador, pero no manejadores en ninguna parte), obtendrá un manejador interno “de último recurso” que está configurado para generar solo el Mensaje (sin otro formato) en el nivel de WARNING .

Intenta ejecutar logging.basicConfig() allí. Como nota, veo que mencionas INFO, pero utilizas DEBUG. Como está escrito, debe mostrar los cinco mensajes. Cambie DEBUG por INFO, y debería ver cuatro mensajes.

 import logging logging.basicConfig() logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message') 

Editar: ¿Ya tiene el registro configurado en su código? No puede reproducir el comportamiento exacto que observa con el código específico provisto.