Obtener la Salida del Módulo de registro en IPython Notebook
Cuando corro lo siguiente dentro de IPython Notebook no veo ninguna salida:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("test")
¿Alguien sabe cómo hacerlo para que pueda ver el mensaje de "prueba" dentro del cuaderno?
5 answers
Intenta lo siguiente:
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logging.debug("test")
Según el registro .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 a la raíz registrador. Las funciones debug (), info(), warning (), error () y critical () llamará a basicConfig () automáticamente si no hay controladores definido para el logger raíz.
Esta función no hace nada si el logger raíz ya tiene controladores configurar él.
Parece que el notebook de ipython llama a basicConfig (o a set handler) en alguna parte.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-15 04:55:39
Si todavía desea usar basicConfig
, vuelva a cargar el módulo de registro de esta manera
import logging
reload(logging)
logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s', level=logging.DEBUG, datefmt='%I:%M:%S')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-31 08:17:30
Entiendo que la sesión de IPython inicia el registro, por lo que basicConfig no funciona. Aquí está la configuración que funciona para mí (me gustaría que 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.')
Recibo un "mylog.archivo log " en el mismo directorio que mi cuaderno 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 serían dos manejadores de archivos definidos
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-28 15:10:48
Tenga en cuenta que stderr es la secuencia predeterminada para el módulo logging
, por lo que en los notebooks de IPython y Jupyter es posible que no vea nada a menos que configure la secuencia a stdout:
import logging
import sys
logging.basicConfig(format='%(asctime)s | %(levelname)s : %(message)s',
level=logging.INFO, stream=sys.stdout)
logging.info('Hello world!')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-09 12:10:41
Puede configurar el registro ejecutando %config Application.log_level="INFO"
Para obtener más información, consulte Opciones del núcleo IPython
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-19 19:55:19