Я використовую журнал Python, і чомусь усі мої повідомлення з’являються двічі.
У мене є модуль для налаштування журналу:
# 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)
Пізніше я закликаю цей метод для налаштування журналу:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
І тоді в скажімо, модуль buy_ham, я закликаю:
self.logger.info('Successfully able to write to %s' % path)
І чомусь усі повідомлення з’являються двічі. Я прокоментував один із обробників потоків, все одно те саме. Трохи дивний, не впевнений, чому це відбувається ... хаха. Якщо припустити, що я пропустив щось очевидне.
Ура, Вікторе
self.logger.handlers = [ch]
натомість вирішило б цю проблему, хоча найкраще просто переконатися, що ви не запускаєте цей код двічі, наприклад, використовуючи if not self.logger
на початку.
configure_logging()
не викликають двічі (наприклад, від конструктора)? Чи створений лише один екземпляр Boy ()?