python如何解决控制台打印log输出重复问题
发表于:2024-10-27 作者:千家信息网编辑
千家信息网最后更新 2024年10月27日,这篇文章主要讲解了"python如何解决控制台打印log输出重复问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python如何解决控制台打印log
千家信息网最后更新 2024年10月27日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安全错误
数据库的锁怎样保障安全
新兴互联网和科技
在北京如何打车软件开发
内蒙天气预报软件开发
咨询数据库安装
bim软件开发花了多少钱
服务器世界跑分排名
宜昌联创网络技术
泉州聊天软件开发方案
蓟州区信息网络技术售后服务
ibm服务器管理接口
梦塔防连接服务器失败
学数据库的收获和体会
2018国内网络安全事件
抖音网络安全手抄报古风
php数据库网址是啥
数据库表名互换
中国的软件开发企业
大数据运维网络安全委员会
网络安全法第一章主要观点
mysql 服务器安装
江苏企业软件开发活动方案
软件开发项目不想做怎么拒绝
华为服务器千兆管理口
app软件开发的服务态度
后台数据库设计论文
计算机网络技术专业考试
大学校园网络安全管理
标准数据库数据类型
中公优就业软件开发专业怎么样
校园网络安全保卫战