Python Language Introduction à la journalisation Python


Exemple

Ce module définit des fonctions et des classes qui implémentent un système flexible de journalisation des événements pour les applications et les bibliothèques.

Le principal avantage de disposer de l'API de journalisation fournie par un module de bibliothèque standard est que tous les modules Python peuvent participer à la journalisation. Votre journal d'application peut donc inclure vos propres messages intégrés à des messages provenant de modules tiers.

Alors, commençons:

Exemple de configuration directement dans le code

import logging

logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter(
        '%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)

logger.debug('this is a %s test', 'debug')

Exemple de sortie:

2016-07-26 18:53:55,332 root         DEBUG    this is a debug test

Exemple de configuration via un fichier INI

En supposant que le fichier s'appelle logging_config.ini. Plus de détails sur le format de fichier se trouvent dans la section de configuration de la journalisation du didacticiel de journalisation .

[loggers]
keys=root

[handlers]
keys=stream_handler

[formatters]
keys=formatter

[logger_root]
level=DEBUG
handlers=stream_handler

[handler_stream_handler]
class=StreamHandler
level=DEBUG
formatter=formatter
args=(sys.stderr,)

[formatter_formatter]
format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s

Ensuite, utilisez logging.config.fileConfig() dans le code:

import logging
from logging.config import fileConfig

fileConfig('logging_config.ini')
logger = logging.getLogger()
logger.debug('often makes a very good meal of %s', 'visiting tourists')

Exemple de configuration via un dictionnaire

A partir de Python 2.7, vous pouvez utiliser un dictionnaire avec des détails de configuration. Le PEP 391 contient une liste des éléments obligatoires et facultatifs du dictionnaire de configuration.

import logging
from logging.config import dictConfig

logging_config = dict(
    version = 1,
    formatters = {
        'f': {'format':
              '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'}
        },
    handlers = {
        'h': {'class': 'logging.StreamHandler',
              'formatter': 'f',
              'level': logging.DEBUG}
        },
    root = {
        'handlers': ['h'],
        'level': logging.DEBUG,
        },
)

dictConfig(logging_config)

logger = logging.getLogger()
logger.debug('often makes a very good meal of %s', 'visiting tourists')