Python日志记录库是否在文件上打印日志两次?

时间:2020-10-15 21:09:36

标签: python class logging handler getattr

我正在研究一个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(“ ......”)

0 个答案:

没有答案