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?

Author: Kyle Brandt, 2013-09-13

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.

 76
Author: falsetru,
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')
 50
Author: Marigold,
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

 18
Author: skulz00,
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!')
 7
Author: Ataxias,
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

 6
Author: Garvey,
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