Cuando registro un evento con logging.info
, no aparece en la terminal de Python.
import logging
logging.info('I am info') # no output
Por el contrario, los eventos registrados con logging.warn
aparecen en la terminal.
import logging
logging.warn('I am warning') # outputs "I am warning"
¿Hay algún cambio de nivel de entorno que pueda realizar logging.info
para imprimir en la consola? Quiero evitar hacer cambios en cada archivo de Python.
getLogger()
, le devuelve el registrador raíz. Siempre que no modifique los otros registradores, solo necesita modificar el registrador raíz.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
Como dijo @ztyx, el nivel de registrador predeterminado es ADVERTENCIA. Tienes que ponerlo en un nivel más bajo
Puede hacerlo usando logging.basicConfig y configurando el nivel de registrador :
fuente
basicConfig()
no funciona para mí, aunquelogging.getLogger().setLevel()
funciona adecuadamente.Las soluciones anteriores no funcionaron para mí, pero el código aquí sí lo hizo:
# 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)
(Omití partes del código en aras de la legibilidad)
fuente
logging.error("Connection timed out!")
e incluso con ellevel=logging.DEBUG
en elbasicConfig()
, no se imprimía en la consola. Agregar el controlador lo hizo, muchas gracias !!basicConfig
o lo configuro por encima de INFO, el registrador de la consola nunca registrará nada. Si dejo fuerabasicConfig
, puedo llamarsetLevel
a un registrador todo el día (y puedo ver el cambio de nivel llamandogetEffectiveLevel
) pero nunca registrará nada por debajo delWARNING
nivel. En realidad, no estoy seguro de que ese no sea el comportamiento correcto, pero no es lo que esperaba.