[Python] Stop using print for debugging

enrico franchi enrico.franchi a gmail.com
Mar 23 Giu 2015 18:58:09 CEST


2015-06-22 23:28 GMT+01:00 Enrico Bianchi <enrico.bianchi a ymail.com>:

> Giusto perche` si e` detto pochi minuti fa' di aprire qualche discussione,
> che ne pensate di questa? Ovvero, che ne pensate dell'usare logging al
> posto di print per debuggare (parte) del codice?
>
> http://inventwithpython.com/blog/2012/04/06/stop-using-print-for-debugging-a-5-minute-quickstart-guide-to-pythons-logging-module/


Trovo che secondo me l'autore sia confuso sul concetto di "debug", ovvero,
dovrebbe specificare all'inizio che "per tutti quelli che pensano che print
sia uno strumento utile di debug (e per tutti quelli che non lo pensano nel
caso generale ma in casi specifici vogliono usarlo) ... blah blah blah.

Per il resto ha essenzialmente ragione: logging ti da flessibilita'
sensibile e funziona bene in produzione. Print, di per se, no. Non e'
chiaro dove sia connesso lo stdout su un generico sistema in produzione, se
devi gestire log-rotation et similia te lo devi fare a mano, etc etc etc
etc.

Quindi si: se vuoi usare una linea di output per "fare debugging", in
generale logging e' meglio. Se e' qualcosa che tanto va a scomparire prima
del commit (e quindi e' effettivamente "vero" debugging -- tracciare
l'applicazione in produzione e' una cosa complementare ma leggermente
diversa) *e* sai dove e' stdout etc etc etc allora e' abbastanza ok. In
particolare a me piace la proprieta' che nel codice di produzione non ho
tipicamente delle print in giro, quindi e' molto facile grepparle prima di
fare commit. Viceversa finisce che la linea di log inserita non per fare
normale tracing ma per debuggare uno specifico problema -- che ci si
auspica scompaia prima di committare -- rimanga li ad inquinare il tutto.

Poi detto fra di noi: logging sembra essere stato pensato da Javisti. Io
temo che semplicemente a suo tempo sia stata presa pesante ispirazione da
logging di Java e che non sia stata concepita un'interfaccia piu' Pythonica
del tutto. Tutta la separazione fra handler, formatter e combriccola
cantante, sebbene cosa in se e per se buona e giusta fa veramente pensare
ad un coso Java. 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.


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


Maggiori informazioni sulla lista Python