Estoy usando el registro de Python y, por alguna razón, todos mis mensajes aparecen dos veces.
Tengo un módulo para configurar el 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)
Más adelante, llamo a este método para configurar el registro:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
Y luego, dentro de, digamos, el módulo buy_ham, llamaría:
self.logger.info('Successfully able to write to %s' % path)
Y por alguna razón, todos los mensajes aparecen dos veces. Comenté uno de los controladores de transmisión, sigue siendo lo mismo. Un poco extraño, no estoy seguro de por qué sucede esto ... jajaja. Suponiendo que me haya perdido algo obvio.
Saludos, Victor
self.logger.handlers = [ch]
lugar resolvería este problema, aunque sería mejor asegurarse de no ejecutar este código dos veces, por ejemplo, usando if not self.logger
al principio.
configure_logging()
que no se llama dos veces (por ejemplo, desde el constructor también)? ¿Se crea solo una instancia de Boy ()?