[Python] Stop using print for debugging

enrico franchi enrico.franchi a gmail.com
Mer 24 Giu 2015 09:47:56 CEST


2015-06-23 20:51 GMT+01:00 Simone Federici <s.federici a gmail.com>:

> 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.
>

Eh... si, vero. D'altra parte o cosi' o cosi'.


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

Si, sono d'accordo. Ma in generale alla fine della fiera Python ha
investito molto sulla laziness, ma in pratica la ha concentrata tutta in
modo quasi esclusivo intorno al concetto di collezione. Per una semplice
pass by name o qualcosa del genere non esiste in pratica supporto.

oppure
>
> logger.debug('dump: %s', lambda : json.dumps(self.obj))
> [non funziona]
>
> dove logging accetta callable methods come parametri
>

O anche questa... non ho deciso quale cosa sia piu' comoda.

>
> 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.
>

Si. Anche cose tipo la funzione di "listen" sembrano decisamente
raffazzonate (e poco Pythoniche e abusano i threads), dove la compagnia di
Java ha invece fatto qualcosa di utile. A me personalmente fa molto comodo
ricaricare le conf di log ogni qualche decina di secondi.


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

Cosa fa di brutto apache2? A me pareva di ricordare fosse una di quelle
benigne.

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

Eh, direi di si....



-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150624/d1d10067/attachment.html>


Maggiori informazioni sulla lista Python