Domanda

In Python 2.4 e versioni successive, è facile configurare il modulo di registrazione per una formattazione più semplice:

logging.basicConfig (level = opts.LOGLEVEL, format = "% (message) s ")

ma per le applicazioni che devono supportare Python 2.3 sembra più difficile, perché l'API di registrazione è stata revisionata in Py2.4. In particolare, basicConfig non accetta alcun argomento. Provando una variazione sul solo esempio nella documentazione di Py2.3, ottengo questo:

try:
    logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s")
except:
    logging.getLogger().setLevel(opts.LOGLEVEL)
    h = logging.StreamHandler()
    h.setFormatter(logging.Formatter("%(message)s"))
    logging.getLogger().addHandler(h)

ma chiamando questo logger root in Py2.3, ad esempio

logging.info("Foo")

fornisce un output duplicato:

Foo
INFO:root:Foo

Non riesco a trovare un modo per modificare il formato del gestore esistente sul logger root in Py2.3 (il blocco "quot" tranne "sopra), quindi il" addHandler " chiamata che produce l'output duplicato. C'è un modo per impostare il formato del root logger senza questa duplicazione? Grazie!

È stato utile?

Soluzione

tranne: senza eccezioni le classi [es] sono un buon modo per mettersi nei guai. Credo che il modulo logging in Python 2.3 abbia la funzione basicConfig () , ma con meno opzioni. Poiché accetta ** kwargs , potrebbe non riuscire in qualsiasi momento dopo aver fatto un lavoro. Penso che abbia già installato un gestore con formato predefinito, quindi non è riuscito a configurare qualcosa. Dopo aver rilevato l'eccezione, hai installato un altro gestore. Avendo 2 gestori ricevi 2 messaggi per ogni evento. Il modo più semplice nel tuo caso: evita di usare basicConfig () e configura logging manualmente. E non usare mai tranne: se non ri-rilancia o registri un'eccezione rilevata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top