python避坑指南02——logging模块日志重复打印问题

本文探讨了Python logging模块在使用过程中遇到的日志重复打印问题。通过问题抛出和解决过程,分析了问题根源在于重复声明logger对象,并提供了解决方案,避免在每次打印日志时重新声明logger,从而消除日志重复打印的现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、问题抛出

        python的logging模块是python使用过程中打印日志的利器。我们可以使用logging模块的logger、Handler、formatter对我们的日志进行封装,指定日志输出的路径、格式以及位置。在声明logger的时候可以传一个字符串作为这个logger的标签。一直以为这个logger是以单例对象的设计模式设计的,只要这个标签名是一样的,那么返回的logger就是同一个。在打印日志的时候,想要实现日志分层,定义类如下函数来封装日志打印函数(由于源代码已经修改,用伪代码形式)

def print_log_info(msg):
    # Logger是我定义的一个类,用来封装日志打印的
    logger = Logger('INFO').getLogger()
    logger.info(msg)

        在测试用例中用到了ddt,将测试用例参数化。关键代码如下:

    @data(*test_datas['test_add'])
    @unpack
    def test_add(self, *args, **kwargs):
        data_path, err_num, test_id, p1, p2, value = args
        result = Test(p1, p2).add()
        try:
            self.assertEqual(result, value, "在{err_num}行用例编号为{test_id}的测试中加法错误,请重新输入" .format(
                err_num = err_num,
                test_id = test_id
            ))
            utils.print_log_info("在{err_num}行用例编号为{test_id}的测试中加法测试成功".format(err_num = err_num,test_id = test_id))
        except AssertionError as err:
            err_str = traceback.format_exc()
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值