python如何解决控制台打印log输出重复问题
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"python如何解决控制台打印log输出重复问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python如何解决控制台打印log
千家信息网最后更新 2026年11月01日python如何解决控制台打印log输出重复问题
这篇文章主要讲解了"python如何解决控制台打印log输出重复问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python如何解决控制台打印log输出重复问题"吧!
先来看这个文件log.py的代码:
代码示例: '''功能描述:实现控制台和文件同时记录日志的功能编写人:超哥编写日期:步骤分析: 1-配置日志记录器名称 2-配置日志级别 3-配置日志格式(可以分别设置,也可以统一设置) 4-创建并添加handler-控制台 5-创建并添加handler-文件 6-提供对外获取logger''' import loggingimport sys def log(): # 1 - 配置日志记录器名称 logger = logging.getLogger('AutoTest') # 2-配置日志级别 logger.setLevel(logging.DEBUG) # 3-配置日志格式(可以分别设置,也可以统一设置) format = logging.Formatter('%(name)s-%(asctime)s-%(message)s') # 4 - 创建并添加handler - 控制台 sh = logging.StreamHandler() sh.setFormatter(format) logger.addHandler(sh) # 5 - 创建并添加handler - 文件 fh = logging.FileHandler('test.log') fh.setFormatter(format) logger.addHandler(fh) # 6 - 提供对外获取logger return logger if __name__ == '__main__': logger = log() logger.info('使用函数定义的log方法')我们在同一目录下创建另外一个文件:
在我们导入写好的log.py文件
from xx目录 import log log().info('xxx1') log().info('xxx2') log().info('xxx3')第一句调用之后,handlers里面已经存在了两个handler,分别是控制台句柄StreamHandler和文件句柄FileHandler,下面图中是第二句调用添加句柄
执行后会发现handlers里面多了一个StreamHandler
怎么解决这种情况,有两个方案,咱们分别列出两种方案代码:
第一种,第一使用单例模式,在log.py文件中增加一行:logger = log() ,这句的作用就是提前实例化好对象,其他模块使用都适用该对象,所以别的模块导入语句要改成:from xxx包.log import logger ,然后使用logger.info('xxxx') 输出日志即可
……省略上方代码
# 6 - 提供对外获取logg的方法 return logger #增加一行 logger = log() if __name__ == '__main__': logger = log() logger.info('使用函数定义的log方法')导入:
from xx包 import logger logger.info('xxx1') logger.info('xxx2') logger.info('xxx3')输出:
第二个方案:log.py每次判断handlers是否已存在
…… # 4 - 创建并添加handler - 控制台 sh = logging.StreamHandler() sh.setFormatter(format) # 5 - 创建并添加handler - 文件 fh = logging.FileHandler('test.log') fh.setFormatter(format) #在新增handler时判断是否为空 if not logger.handlers: logger.addHandler(sh) logger.addHandler(fh) # 6 - 提供对外获取logg的方法 return logger if __name__ == '__main__': logger = log() logger.info('使用函数定义的log方法')导入文件代码保持不变:
from xx包 import log log().info('xxx1') log().info('xxx2') log().info('xxx3')感谢各位的阅读,以上就是"python如何解决控制台打印log输出重复问题"的内容了,经过本文的学习后,相信大家对python如何解决控制台打印log输出重复问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
文件
控制台
控制
日志
输出
配置
问题
代码
方法
对外
函数
句柄
方案
学习
一行
两个
内容
功能
句调
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
互联网络科技
互联网科技工作委员会主任
互联网金融监管科技数据
港股互联网科技股
中资互联网科技
汇久创客互联网科技
沃里互联网科技
互联网科技网站
玖二柒互联网科技公司待遇
杭州壁岐互联网科技有限公司
米聚互联网科技南京有限公司排面
互联网科技人工智能实验室
如何创新互联网科技
佛山市翊博互联网络科技有限公司
用友工业互联网科技发展
云南省自由互联网科技有限公司
好易买互联网科技
众联互联网络科技
互联网科技对化妆品行业
互联网属科技
互联网与未来科技
互联网金融 科技创新
上海亿帐通互联网科技
互联网科技大会案例
须眉科技是互联网公司吗
彤创互联网科技有限公司
千方科技属于互联网企业吗
雨阳互联网卡科技有限公司
数字互联网科技有限公司