python - tablas - trabajar con jupyter notebook
Obtener salida del módulo de registro en el cuaderno IPython (5)
Cuando ejecuto lo siguiente dentro de IPython Notebook, no veo ningún resultado:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("test")
¿Alguien sabe cómo hacerlo para que pueda ver el mensaje de "prueba" dentro de la computadora portátil?
Pruebe lo siguiente:
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logging.debug("test")
De acuerdo con logging.basicConfig :
Hace la configuración básica para el sistema de registro mediante la creación de un StreamHandler con un formateador predeterminado y agregarlo al registrador de raíz. Las funciones debug (), info (), warning (), error () y critical () llamarán a basicConfig () automáticamente si no se definen manejadores para el registrador de raíz.
Esta función no hace nada si el registrador de raíz ya tiene controladores configurados para él.
Parece que el cuaderno ipython llama a basicConfig (o al controlador de configuración) en algún lugar.
Puede configurar el registro ejecutando %config Application.log_level="INFO"
Para obtener más información, consulte las opciones del kernel de IPython
Según entiendo, la sesión de IPython inicia el registro de modo que basicConfig no funciona. Aquí está la configuración que funciona para mí (ojalá esto no fuera tan asqueroso, ya que quiero usarlo para casi todos mis cuadernos):
import logging
logger = logging.getLogger()
fhandler = logging.FileHandler(filename=''mylog.log'', mode=''a'')
formatter = logging.Formatter(''%(asctime)s - %(name)s - %(levelname)s - %(message)s'')
fhandler.setFormatter(formatter)
logger.addHandler(fhandler)
logger.setLevel(logging.DEBUG)
Ahora cuando corro:
logging.error(''hello!'')
logging.debug(''This is a debug message'')
logging.info(''this is an info message'')
logging.warning(''tbllalfhldfhd, warning.'')
Obtengo un archivo "mylog.log" en el mismo directorio que mi computadora portátil que contiene:
2015-01-28 09:49:25,026 - root - ERROR - hello!
2015-01-28 09:49:25,028 - root - DEBUG - This is a debug message
2015-01-28 09:49:25,029 - root - INFO - this is an info message
2015-01-28 09:49:25,032 - root - WARNING - tbllalfhldfhd, warning.
Tenga en cuenta que si vuelve a ejecutar esto sin reiniciar la sesión de IPython, escribirá entradas duplicadas en el archivo, ya que ahora habrá dos manejadores de archivos definidos
Si aún desea usar basicConfig
, vuelva a cargar el módulo de registro como este
import logging
reload(logging)
logging.basicConfig(format=''%(asctime)s %(levelname)s:%(message)s'', level=logging.DEBUG, datefmt=''%I:%M:%S'')
Tenga en cuenta que stderr es la secuencia predeterminada para el módulo de logging
, por lo que en los portátiles IPython y Jupyter es posible que no vea nada a menos que configure la transmisión en stdout:
import logging
import sys
logging.basicConfig(format=''%(asctime)s | %(levelname)s : %(message)s'',
level=logging.INFO, stream=sys.stdout)
logging.info(''Hello world!'')