Come configurare il formato dei messaggi di registrazione di Python 2.3?
-
22-07-2019 - |
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!
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.