Saya menggunakan Python logging, dan untuk beberapa alasan, semua pesan saya muncul dua kali.
Saya memiliki modul untuk mengonfigurasi logging:
# 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)
Nanti, saya memanggil metode ini untuk mengkonfigurasi logging:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
Dan kemudian katakanlah, modul buy_ham, saya akan menelepon:
self.logger.info('Successfully able to write to %s' % path)
Dan untuk beberapa alasan, semua pesan muncul dua kali. Saya mengomentari salah satu penangan arus, masih hal yang sama. Agak aneh, tidak yakin mengapa ini terjadi ... lol. Dengan asumsi saya melewatkan sesuatu yang jelas.
Cheers, Victor
self.logger.handlers = [ch]
sebagai gantinya akan menyelesaikan masalah ini, meskipun akan lebih baik hanya memastikan bahwa Anda tidak menjalankan kode ini dua kali, misalnya, menggunakan if not self.logger
di awal.
configure_logging()
tidak dipanggil dua kali (misalnya dari konstruktor juga)? Apakah hanya satu instance Boy () yang dibuat?