Ich verwende die Python-Protokollierung und aus irgendeinem Grund werden alle meine Nachrichten zweimal angezeigt.
Ich habe ein Modul zum Konfigurieren der Protokollierung:
# 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)
Später rufe ich diese Methode auf, um die Protokollierung zu konfigurieren:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
Und dann würde ich innerhalb des buy_ham-Moduls Folgendes nennen:
self.logger.info('Successfully able to write to %s' % path)
Aus irgendeinem Grund werden alle Nachrichten zweimal angezeigt. Ich habe einen der Stream-Handler auskommentiert, immer noch dasselbe. Etwas seltsam, nicht sicher, warum das passiert ... lol. Vorausgesetzt, ich habe etwas Offensichtliches verpasst.
Prost, Victor
self.logger.handlers = [ch]
stattdessen würde dieses Problem lösen, obwohl es am besten ist, nur sicherzustellen, dass Sie diesen Code nicht zweimal ausführen, indem Sie ihn beispielsweise if not self.logger
zu Beginn verwenden.
configure_logging()
nicht zweimal aufgerufen wird (zB auch vom Konstruktor)? Wird nur eine Instanz von Boy () erstellt?