sto usando il modulo di registrazione standard di Python nella mia applicazione di pitone:logger Pigro valutazione stringa di messaggio
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger("log") while True: logger.debug('Stupid log message " + ' '.join([str(i) for i in range(20)])) # Do something
Il problema è che, anche se il livello di debug non è abilitazione, che stupido messaggio di log viene valutata su ogni iterazione del ciclo, che danneggia male le prestazioni.
C'è qualche soluzione per questo?
In C++ abbiamo log4cxx
pacchetto che fornisce le macro in questo modo:
LOG4CXX_DEBUG(logger, messasage)
che valuta in modo efficace per
if (log4cxx::debugEnabled(logger)) { log4cxx.log(logger,log4cxx::LOG4CXX_DEBUG, message) }
Ma dal momento che non ci sono le macro in Python (per quanto ne so), se c'è un modo efficiente fare il logging?
Semplice ed efficiente. Mi piace. Questo dovrebbe guadagnare più upvotes. – Rockallite
L'efficienza dipende dal caso in questione e si dovrebbe sempre confrontare il proprio scenario. Nel mio caso, il logging lazy non richiedeva alcun argomento, ma poteva raccogliere elementi dalla classe dopo aver richiamato il '__str__'. Quindi, in sostanza, ho ottenuto quasi lo stesso risultato. Vedere il mio commento [qui] (https://gist.github.com/schnittstabil/9372911#gistcomment-1910973) – guyarad
@guyarad: Si è preso il tempo necessario per creare anche istanze 'lazyjoin'. Vedi anche la mia risposta a [Python: come eseguire la registrazione debug del debug] (http://stackoverflow.com/questions/21377020/python-how-to-do-lazy-debug-logging/22204021#22204021). – schnittstabil