网上好多说是用这个方法,但没有解决:
logger.propagate = False
成功解决方法, 如果当前日志器里handler已存在就不重复添加,为空再添加,避免日志重复输出:
- import logging,os,sys
- class Log_info(object):
- def __init__(self,fileName):
- path = os.path.dirname(os.path.dirname(__file__))
- try:
- self.logs_path = path + r'/'+ fileName + '/'
- except:
- print("未找到指定文件夹:%s,请核实!" % fileName)
- os._exit(0)
- # 指定日志文件名,获取当前执行的py文件名,将日志存放到指定test_logs文件夹中
- self.filename = self.logs_path + str(os.path.basename(sys.argv[0]).split(".")[0]) + '.log'
- # 指定输出的格式和内容
- self.format = '%(asctime)s [%(filename)s]-<%(funcName)s> %(levelname)s:%(message)s'
- # 指定时间格式
- self.datefmt = '%Y-%m-%d %H:%M:%S'
- self.logger = logging.getLogger(__name__)
-
- def main(self):
- self.logger.setLevel(logging.INFO)
- format = logging.Formatter(self.format,datefmt=self.datefmt)
- # 如果当前日志器里handler已存在就不重复添加,为空再添加,避免日志重复输出
- if not self.logger.handlers:
- # 日志输出到文件
- file_handler = logging.FileHandler(self.filename)
- file_handler.setLevel(logging.INFO)
- file_handler.setFormatter(format)
- # 使用StreamHandler输出到屏幕
- console = logging.StreamHandler()
- console.setLevel(logging.INFO)
- console.setFormatter(format)
- # 添加两个Handler
- self.logger.addHandler(file_handler)
- self.logger.addHandler(console)
- return self.logger.info