python如何解决控制台打印log输出重复问题
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"python如何解决控制台打印log输出重复问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python如何解决控制台打印log
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
湖北省广电网络技术部电话
软件开发螺旋模型步骤
深圳三朵云服务器
计算机网络技术专升本二本分数线
淘宝商品 数据库
庚顿实时数据库价格
荆门凯度网络技术有限公司
直销软件开发公司公司
数据库bgk转utf
西安交大 网络安全
云生活网络安全吗
服务器 安全组原理
宁德坟远网络技术有限公司
云服务器高带宽
代码连接数据库 ssh技术
数据库复合码和组合码
无人驾驶数据库收
对应于用户级数据库
河北开拓者易货软件开发靠谱吗
全局主题软件开发
switch断开服务器
海口网络安全周
杭州游卡网络技术有限公司加班
新聚变服务器
c 显示数据库文本换行
软件开发包括哪些系统
软件开发 增值税免税
5g中的密集网络技术论文
一梦江湖三周年纪念服务器
湖北省哪里招聘网络安全工程师