Estou usando o log Python e, por algum motivo, todas as minhas mensagens estão aparecendo duas vezes.
Eu tenho um módulo para configurar o registro:
# 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)
Mais tarde, chamo este método para configurar o registro:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
E então, digamos, o módulo buy_ham, eu chamaria:
self.logger.info('Successfully able to write to %s' % path)
E por algum motivo, todas as mensagens estão aparecendo duas vezes. Comentei um dos manipuladores de fluxo, ainda é a mesma coisa. Um pouco estranho, não sei por que isso está acontecendo ... lol. Supondo que eu tenha esquecido algo óbvio.
Saúde, Victor
self.logger.handlers = [ch]
vez disso, resolveria esse problema, embora seja melhor apenas garantir que você não execute este código duas vezes, por exemplo, usando if not self.logger
no início.
configure_logging()
não é chamado duas vezes (por exemplo, do construtor também)? Apenas uma instância de Boy () foi criada?