Consider the following code, where I have created a custom logger class and then in a for loop I am creating logger object multiple times, but instead of adding one log at a time it is adding multiple logs as shown below import sys import logging import os import configs class Logger: def __init__(self, logger_name='logger', log_file_name='logs.log'): logger = logging.getLogger(logger_name) logger.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') file_handler = logging.FileHandler(os.path.join(configs.LOGS_DIR, log_file_name)) file_handler.setLevel(logging.INFO) file_handler.setFormatter(formatter) logger.addHandler(file_handler) self.logger = logger def get_logger(self): return self.logger for i in range(5): logger = Logger(logger_name=f'test', log_file_name='test').get_logger() logger.info(i) I was expecting this: 2024-12-20 21:17:09,623 - test - INFO - 0 2024-12-20 21:17:09,623 - test - INFO - 1 2024-12-20 21:17:09,623 - test - INFO - 2 2024-12-20 21:17:09,623 - test - INFO - 3 2024-12-20 21:17:09,642 - test - INFO - 4 but this is the output: 2024-12-20 21:17:09,623 - test - INFO - 0 2024-12-20 21:17:09,623 - test - INFO - 1 2024-12-20 21:17:09,623 - test - INFO - 1 2024-12-20 21:17:09,623 - test - INFO - 2 2024-12-20 21:17:09,623 - test - INFO - 2 2024-12-20 21:17:09,623 - test - INFO - 2 2024-12-20 21:17:09,623 - test - INFO - 3 2024-12-20 21:17:09,623 - test - INFO - 3 2024-12-20 21:17:09,623 - test - INFO - 3 2024-12-20 21:17:09,623 - test - INFO - 3 2024-12-20 21:17:09,642 - test - INFO - 4 2024-12-20 21:17:09,642 - test - INFO - 4 2024-12-20 21:17:09,642 - test - INFO - 4 2024-12-20 21:17:09,642 - test - INFO - 4 2024-12-20 21:17:09,642 - test - INFO - 4 Why this is happening and how to fix this? Continue reading...