栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

unittest自动测试多个用例时,logging模块重复打印解决

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unittest自动测试多个用例时,logging模块重复打印解决

网上好多说是用这个方法,但没有解决:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988167.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号