<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-06-23 20:51 GMT+01:00 Simone Federici <span dir="ltr"><<a href="mailto:s.federici@gmail.com" target="_blank">s.federici@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Enrico franchi:<span class=""><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">logger.debug('dump: %s', JSONDumper(something))</blockquote></span></div><br><div><div><div>yep, vuol dire scrivere però struttura OOP per il logging, non che ci sia nulla di male.</div></div></div></div></div></blockquote><div><br></div><div>Eh... si, vero. D'altra parte o cosi' o cosi'.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div><div><div><br></div><div>non sarebbe male se invece si andasse in qualcosa tipo</div><div><br></div><div>logger.debug('dump: %s', (<span style="color:rgb(0,0,0);font-size:12.8000001907349px">json.dumps, (self.obj),</span>))</div><div>[non funziona]</div><div><br></div><div>dove cioè il modulo logging inglobasse la logica lazy ad esempio con la classica tupla (f, *args, **kwargs) da passare come un parametro</div></div></div></div></div></blockquote><div><br></div><div>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.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div><div><div>oppure</div><div><br></div><div>logger.debug('dump: %s', lambda : <span style="color:rgb(0,0,0);font-size:12.8000001907349px">json.dumps(self.obj)</span>)<br></div><div>[non funziona]<br></div><div><br></div><div>dove logging accetta callable methods come parametri</div></div></div></div></div></blockquote><div><br></div><div>O anche questa... non ho deciso quale cosa sia piu' comoda. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div><div><div><br></div><div>Enrico franchi:<span class=""><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">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. </blockquote></span></div><div><br></div><div>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.</div></div></div></div></div></blockquote><div><br></div><div>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.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div><div><div>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)</div></div></div></div></div></blockquote><div><br></div><div>Cosa fa di brutto apache2? A me pareva di ricordare fosse una di quelle benigne. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div><div><div>Marco Beri:<span class=""><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">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())</blockquote></span></div><div><br></div><div>questo però è il classico esempio da mettere lazy o sotto <span style="color:rgb(0,0,0);font-size:12.8000001907349px">l</span><span style="color:rgb(0,0,0);font-size:12.8000001907349px;background-color:rgba(255,255,255,0)"><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;vertical-align:baseline">ogger</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;vertical-align:baseline">.</span></span><font size="2" style="color:rgb(0,0,0)"><span style="background-color:rgba(255,255,255,0)">isEnabledFor</span></font><span style="font-style:inherit;font-variant:inherit;color:rgb(0,0,0);font-size:12.8000001907349px;margin:0px;padding:0px;border:0px;vertical-align:baseline">(</span><span style="font-style:inherit;font-variant:inherit;color:rgb(0,0,0);font-size:12.8000001907349px;margin:0px;padding:0px;border:0px;vertical-align:baseline">logging</span><span style="font-style:inherit;font-variant:inherit;color:rgb(0,0,0);font-size:12.8000001907349px;margin:0px;padding:0px;border:0px;vertical-align:baseline">.</span><span style="font-style:inherit;font-variant:inherit;color:rgb(0,0,0);font-size:12.8000001907349px;margin:0px;padding:0px;border:0px;vertical-align:baseline">DEBUG</span><span style="font-style:inherit;font-variant:inherit;color:rgb(0,0,0);font-size:12.8000001907349px;margin:0px;padding:0px;border:0px;vertical-align:baseline">) </span></div></div></div></div></div></blockquote><div><br></div><div>Eh, direi di si....</div><div><br></div></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>