Sto usando la registrazione di Python e, per qualche motivo, tutti i miei messaggi vengono visualizzati due volte.
Ho un modulo per configurare la registrazione:
# BUG: It's outputting logging messages twice - not sure why - it's not the propagate setting.
def configure_logging(self, logging_file):
self.logger = logging.getLogger("my_logger")
self.logger.setLevel(logging.DEBUG)
self.logger.propagate = 0
# Format for our loglines
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Setup console logging
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
self.logger.addHandler(ch)
# Setup file logging as well
fh = logging.FileHandler(LOG_FILENAME)
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
self.logger.addHandler(fh)
Successivamente, chiamo questo metodo per configurare la registrazione:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
E poi, ad esempio, il modulo buy_ham, chiamerei:
self.logger.info('Successfully able to write to %s' % path)
E per qualche motivo, tutti i messaggi vengono visualizzati due volte. Ho commentato uno dei gestori di flusso, sempre la stessa cosa. Un po 'strano, non sono sicuro del motivo per cui sta accadendo ... lol. Supponendo che mi sia perso qualcosa di ovvio.
Salute, Victor
self.logger.handlers = [ch]invece risolverà questo problema, anche se sarebbe meglio assicurarsi di non eseguire questo codice due volte, ad esempio utilizzando if not self.loggerall'inizio.
configure_logging()non venga chiamato due volte (es. Anche dal costruttore)? È stata creata solo un'istanza di Boy ()?