214 votes

Obtenir la sortie du module de journalisation dans IPython Notebook

Lorsque j'exécute ce qui suit dans IPython Notebook, je ne vois aucune sortie :

import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("test")

Quelqu'un sait-il comment faire pour que je puisse voir le message "test" à l'intérieur du cahier ?

22voto

user3142948 Points 51

À partir de la version 3.8 de la journalisation, une force a été ajouté et supprime tous les gestionnaires existants, ce qui permet à l basicConfig pour travailler. Cela a fonctionné sur IPython version 7.29.0 et Jupyter Lab version 3.2.1.

import logging
logging.basicConfig(level=logging.DEBUG,
                    force = True)
logging.debug("test")

15voto

Garvey Points 439

Vous pouvez configurer la journalisation en exécutant %config Application.log_level="INFO"

Pour plus d'informations, voir Options du noyau d'IPython

6voto

yanniskatsaros Points 98

Je voulais une réponse simple et directe à cette question, avec un résultat joliment stylé, alors voici ma recommandation

import sys
import logging

logging.basicConfig(
    format='%(asctime)s [%(levelname)s] %(name)s - %(message)s',
    level=logging.INFO,
    datefmt='%Y-%m-%d %H:%M:%S',
    stream=sys.stdout,
)
log = logging.getLogger('notebook')

Vous pouvez alors utiliser log.info() ou tout autre niveaux de journalisation n'importe où dans votre carnet de notes avec une sortie qui ressemble à ceci

2020-10-28 17:07:08 [INFO] notebook - Hello world
2020-10-28 17:12:22 [INFO] notebook - More info here
2020-10-28 17:12:22 [INFO] notebook - And some more

5voto

Brig Points 2457

J'ai configuré un logger pour les deux fichiers et je voulais qu'il apparaisse sur le notebook. Il s'avère que l'ajout d'un gestionnaire de fichiers efface le gestionnaire de flux par défaut.

logger = logging.getLogger()

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# Setup file handler
fhandler  = logging.FileHandler('my.log')
fhandler.setLevel(logging.DEBUG)
fhandler.setFormatter(formatter)

# Configure stream handler for the cells
chandler = logging.StreamHandler()
chandler.setLevel(logging.DEBUG)
chandler.setFormatter(formatter)

# Add both handlers
logger.addHandler(fhandler)
logger.addHandler(chandler)
logger.setLevel(logging.DEBUG)

# Show the handlers
logger.handlers

# Log Something
logger.info("Test info")
logger.debug("Test debug")
logger.error("Test error")

2voto

grisaitis Points 112

configuration

import logging

# make a handler
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

# add it to the root logger
logging.getLogger().addHandler(handler)

log de votre propre logger

# make a logger for this notebook, set verbosity
logger = logging.getLogger(__name__)
logger.setLevel('DEBUG')

# send messages
logger.debug("debug message")
logger.info("so much info")
logger.warning("you've veen warned!")
logger.error("bad news")
logger.critical("really bad news")

2021-09-02 18:18:27,397 - __main__ - DEBUG - debug message
2021-09-02 18:18:27,397 - __main__ - INFO - so much info
2021-09-02 18:18:27,398 - __main__ - WARNING - you've veen warned!
2021-09-02 18:18:27,398 - __main__ - ERROR - bad news
2021-09-02 18:18:27,399 - __main__ - CRITICAL - really bad news

capturer la journalisation à partir d'autres bibliothèques

logging.getLogger('google').setLevel('DEBUG')

from google.cloud import storage

client = storage.Client()

2021-09-02 18:18:27,415 - google.auth._default - DEBUG - Checking None for explicit credentials as part of auth process...
2021-09-02 18:18:27,416 - google.auth._default - DEBUG - Checking Cloud SDK credentials as part of auth process...
2021-09-02 18:18:27,416 - google.auth._default - DEBUG - Cloud SDK credentials not found on disk; not using them
...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X