我正在研究一个Python项目,在该项目中,我必须打印日志并将日志同时存储在文件中。出现的问题是,日志是以首选方式在控制台中打印的,其中每行仅打印一次,但是日志以无效的方式存储在文件中,其中每行在文件中打印两次。我在这里Python logging module is printing lines multiple times中查看了解决方案并实现了这一解决方案,但这并不能解决问题。因此,日志记录模块位于另一个名为logs.py的文件中,我正在从其他模块调用此文件。请注意,这个logs.py被称为我的其他8个模块,并且在调用时应该只有一个实例
#logs.py
import logging
import logging.handlers
def get_name():
with open("latestLogNames.txt") as f:
for line in f:
pass
latestLog = line
logfile_name = latestLog[:-1]
return logfile_name
def setLogger(logfile_name):
logger = logging.getLogger(__name__)
if not getattr(logger, 'handler_set', None):
logger.setLevel(logging.INFO)
stream_handler = logging.StreamHandler()
file_handler = logging.FileHandler(logfile_name)
formatter = logging.Formatter('%(message)s')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
logger.setLevel(logging.INFO)
logger.propagate = False
logger.handler_set = True
return logger
我正在从另一个这样的文件中调用它:
logger = logs.setLogger(logs.get_name())
因此,我正在实现logger.info(“ ......”)而不是print(“ ......”)