Tôi đang sử dụng ghi nhật ký Python và vì một số lý do, tất cả các thư của tôi đều xuất hiện hai lần.
Tôi có một mô-đun để định cấu hình ghi nhật ký:
# 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)
Sau đó, tôi gọi phương thức này để định cấu hình ghi nhật ký:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
Và sau đó, trong mô-đun buy_ham, tôi sẽ gọi:
self.logger.info('Successfully able to write to %s' % path)
Và vì lý do nào đó, tất cả các tin nhắn đều xuất hiện hai lần. Tôi đã nhận xét ra một trong những trình xử lý luồng, vẫn như vậy. Hơi kỳ lạ, không hiểu tại sao điều này lại xảy ra ... lol. Giả sử tôi đã bỏ lỡ điều gì đó hiển nhiên.
Chúc mừng, Victor
self.logger.handlers = [ch]
thay thế sẽ giải quyết được vấn đề này, mặc dù tốt nhất bạn chỉ nên đảm bảo rằng bạn không chạy mã này hai lần, chẳng hạn bằng cách sử dụng if not self.logger
lúc bắt đầu.
configure_logging()
không được gọi hai lần (ví dụ: từ hàm tạo)? Có phải chỉ một phiên bản Boy () được tạo không?