Python Language Introduzione alla registrazione di Python


Esempio

Questo modulo definisce funzioni e classi che implementano un sistema di registrazione eventi flessibile per applicazioni e librerie.

Il vantaggio principale di avere l'API di registrazione fornita da un modulo di libreria standard è che tutti i moduli Python possono partecipare alla registrazione, quindi il registro delle applicazioni può includere i propri messaggi integrati con i messaggi di moduli di terze parti.

Quindi iniziamo:

Esempio di configurazione direttamente nel codice

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')

Esempio di uscita:

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

Esempio di configurazione tramite un file INI

Supponendo che il file sia denominato logging_config.ini. Ulteriori dettagli sul formato del file si trovano nella sezione di configurazione della registrazione del tutorial di registrazione .

[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

Quindi usa logging.config.fileConfig() nel codice:

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')

Esempio di configurazione tramite un dizionario

A partire da Python 2.7, è possibile utilizzare un dizionario con i dettagli di configurazione. PEP 391 contiene un elenco degli elementi obbligatori e facoltativi nel dizionario di configurazione.

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')