Lets say we have such a structure of project:
-main.py
-dir_1/module_log.py
where module_log.py is set o helpers to avoid redundant code in project.
Content of the module_log.py is as follows:
import logging as log
def get_module_logger(module_name):
logger = log.getLogger(module_name)
logger.setLevel(log.INFO)
formatter = log.Formatter('%(asctime)s:%(name)s:%(levelname)s:%(message)s')
file_handler = log.FileHandler('path/to/logfile/logs.log')
file_handler.setFormatter(formatter)
stream_handler = log.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
return logger
def log_info_1():
logger = get_module_logger(__name__)
logger.info('\n____________INFO_1____________')
def log_info_2():
logger = get_module_logger(__name__)
logger.info('\n____________INFO_2____________')
And content of the main.py is like:
import module_log as ml
ml.log_info_1()
logger = ml.get_module_logger(__name__)
logger.info('Main log')
ml.log_info_2()
The problem is that the logger logs properly first and second message into file, but the third one is written twice.
Could anyone explain my why is it so? How to avoid such issues?