[Python] Stop using print for debugging
Simone Federici
s.federici a gmail.com
Mar 23 Giu 2015 21:51:03 CEST
Enrico franchi:
> logger.debug('dump: %s', JSONDumper(something))
yep, vuol dire scrivere però struttura OOP per il logging, non che ci sia
nulla di male.
non sarebbe male se invece si andasse in qualcosa tipo
logger.debug('dump: %s', (json.dumps, (self.obj),))
[non funziona]
dove cioè il modulo logging inglobasse la logica lazy ad esempio con la
classica tupla (f, *args, **kwargs) da passare come un parametro
oppure
logger.debug('dump: %s', lambda : json.dumps(self.obj))
[non funziona]
dove logging accetta callable methods come parametri
Enrico franchi:
> Poi in Java hanno elaborato su logging con librerie crescentemente piu'
> elaborate e comode e noi siamo rimasti indietro -- nel senso che non
> conosco librerie alternative che siano largamente usate.
Si ma grosso modo sono andati verso il multithread, implementazioni più
leggere, implementazioni disparate. L'utilizzo resta lo stesso a livello
sviluppatore, e dietro puoi scegliere varie implementazioni javiste.
Enrico Bianchi:
> Da quello che ho notato, dalla comparsa di log4j, tutte le librerie per il
> logging tendono ad imitarne il comportamento, anche la libreria di logging
> presente nella libreria standard di Java (con qualche modifica). Non ho mai
> capito il perche`, presumo semplicemente che sia legato alla diffusione di
> log4j frammista alla diffusione di Java...
Secondo me il problema di log4j è la licenza, per questo sono nate delle
specifiche molto simili... (non ho nulla contro la licenza apache2 - solo
che certe situazioni scappano da tutto ciò che è open)
Marco Beri:
> Concordo. Infatti io di solito se voglio leggere un dict e proprio mi
> serve averlo nel log, ci scrivo una roba così "\t".join("%s=%s" % (k, v)
> for k, v in data.items())
questo però è il classico esempio da mettere lazy o sotto logger.
isEnabledFor(logging.DEBUG)
tipo devi scrivere un lazy_join.
sarebbe fico poter scrivere
logger.debug('dump: %s', (lambda x: "\t".join("%s=%s" % (k, v) for k, v in
x.items(), (data,)))
[non funziona]
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150623/830c3eeb/attachment-0001.html>
Maggiori informazioni sulla lista
Python