ฉันใช้การบันทึก 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)
และด้วยเหตุผลบางประการข้อความทั้งหมดจึงปรากฏขึ้นสองครั้ง ฉันแสดงความคิดเห็นจากตัวจัดการสตรีมคนหนึ่ง แต่ก็ยังคงเหมือนเดิม แปลกนิดหน่อยไม่แน่ใจว่าทำไมถึงเกิดขึ้น ... ฮ่า ๆ สมมติว่าฉันพลาดสิ่งที่ชัดเจน
ไชโยวิคเตอร์
configure_logging()ไม่ถูกเรียกสองครั้ง (เช่นจากตัวสร้างด้วย)? มีการสร้าง Boy () เพียงชุดเดียวหรือไม่