找bug的过程
关于昨天程序出差我找bug的过程记录
昨天才程序
https://www.cnblogs.com/pythonywy/p/11006273.html
├── xxxx
│ ├── src.py
│ └── fil_mode.py
│ └── data_time.py
│ └── loading.py
│ └── data_time.py
│ └── logger.py
src.py与打印日志相关片段
if __name__ == '__main__':
logger_start('程序主界面')
while True:
print("\033[0;31;44m\t\t杨大爷超市欢迎您\t\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入0进入注册界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入1进入登入界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入2进入充值界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入3进入余额查询界面\t\t\033[5m")
print("\033[0;30;42m\t\t输入4进入购物界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入5进入解冻界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入q退出程序 \t\t\t\t\033[5m")
print(38 * '-')
user_shopping_chiose = input('请输入你要选择的功能')
if user_shopping_chiose not in msg_dict:
print('请好好输入')
continue
elif user_shopping_chiose=='q':
print('再见')
logger_end('程序主界面')
break
else:
logger_start(f'{app_name_dict[user_shopping_chiose]}')
msg_dict[user_shopping_chiose]()
logger_end(f'{app_name_dict[user_shopping_chiose]}')
我将其中打印日志出现问题的地方运行,其他地方注释掉
if __name__ == '__main__':
#logger_start('程序主界面')
while True:
print("\033[0;31;44m\t\t杨大爷超市欢迎您\t\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入0进入注册界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入1进入登入界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入2进入充值界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入3进入余额查询界面\t\t\033[5m")
print("\033[0;30;42m\t\t输入4进入购物界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入5进入解冻界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入q退出程序 \t\t\t\t\033[5m")
print(38 * '-')
user_shopping_chiose = input('请输入你要选择的功能')
if user_shopping_chiose not in msg_dict:
print('请好好输入')
continue
elif user_shopping_chiose=='q':
print('再见')
logger_end('程序主界面')
break
else:
logger_start(f'{app_name_dict[user_shopping_chiose]}')
msg_dict[user_shopping_chiose]()
#logger_end(f'{app_name_dict[user_shopping_chiose]}')
生成的日志
top_up程序启动时间:2019-06-12 17:37:53 #运行一次top_up功能
top_up程序启动时间:2019-06-12 17:37:55 #运行两次top_up功能
top_up程序启动时间:2019-06-12 17:37:55
top_up程序启动时间:2019-06-12 17:37:57 #运行三次top_up功能
top_up程序启动时间:2019-06-12 17:37:57
top_up程序启动时间:2019-06-12 17:37:57
top_up程序启动时间:2019-06-12 17:37:58 #运行四次top_up功能
top_up程序启动时间:2019-06-12 17:37:58
top_up程序启动时间:2019-06-12 17:37:58
top_up程序启动时间:2019-06-12 17:37:58
我们发现他运行后内侧应该还存在日志相关函数,我们这时候看看原来的函数
logger.py
def logger_start(app):
logger_login = logging.getLogger('start')
fli_show = logging.FileHandler('app.log')
logger_format = logging.Formatter('%(message)s程序启动时间:%(asctime)s',
datefmt='%Y-%m-%d %X' )
fli_show.setFormatter(logger_format)
logger_login.addHandler(fli_show)
logger_login.setLevel(10)
logger_login.info(app)
#这时候我又三种想法,
#第一种把函数return出来,每次赋予不同的变量名,这里可以用时间生成函数来进行保证每次函数名不一样
#第二种找可能会出现相同地方'logger_login'这个名字
#第三种找可能会出现相同地方logging.getLogger('start')中('start')这个名字
我选择最容易修改的第三种进行修改
import logging
from data_time import data_time
def logger_login(user):
logger_login = logging.getLogger(data_time()) #这是我自定义的一个函数返回值是当前时间每次都会不同
fli_show = logging.FileHandler('user_login.log')
logger_format = logging.Formatter('登入时间:%(asctime)s %(levelname)s-用户:%(message)s',
datefmt='%Y-%m-%d %X' )
fli_show.setFormatter(logger_format)
logger_login.addHandler(fli_show)
logger_login.setLevel(10)
logger_login.info(user)
def logger_exit(user):
logger_login = logging.getLogger(data_time())
fli_show = logging.FileHandler('user_login.log')
logger_format = logging.Formatter('退出时间:%(asctime)s %(levelname)s-用户:%(message)s',
datefmt='%Y-%m-%d %X' )
fli_show.setFormatter(logger_format)
logger_login.addHandler(fli_show)
logger_login.setLevel(10)
logger_login.info(user)
def logger_start(app):
logger_login = logging.getLogger(data_time())
fli_show = logging.FileHandler('app.log')
logger_format = logging.Formatter('%(message)s程序启动时间:%(asctime)s',
datefmt='%Y-%m-%d %X' )
fli_show.setFormatter(logger_format)
logger_login.addHandler(fli_show)
logger_login.setLevel(10)
logger_login.info(app)
def logger_end(app):
logger_login = logging.getLogger(data_time())
fli_show = logging.FileHandler('app.log')
logger_format = logging.Formatter('%(message)s程序关闭时间:%(asctime)s',
datefmt='%Y-%m-%d %X' )
fli_show.setFormatter(logger_format)
logger_login.addHandler(fli_show)
logger_login.setLevel(10)
logger_login.info(app)
def logger_shopping(user,car):
logger_login = logging.getLogger(data_time())
fli_show = logging.FileHandler('user_shopping.log')
logger_format = logging.Formatter('%(asctime)s %(levelname)s-%(message)s',
datefmt='%Y-%m-%d %X' )
fli_show.setFormatter(logger_format)
logger_login.addHandler(fli_show)
logger_login.setLevel(10)
logger_login.info(user,car)
最后呢解决了
找bug的过程的更多相关文章
- 附加题程序找bug
private: void Resize(int sz){ ){ return; } if(maxSize != sz){ T *arr = new T[sz]; if(arr == NULL){ r ...
- 第二次作业:找Bug
引子 我真的想了一个小时,上哪里去找bug.我昨天还留意到一个bug,今天就不见了.灵光不断,我想起来了.我就要找大公司的产品的bug... 第一部分 调研, 评测 体验. <腾讯桌球>是 ...
- 在无法单步调试的情况下找Bug的技巧
比如说你有一个大的模块A,其组成部分有B,C,D这3个小的模块,现在A出了一个BUG,因为某种原因的限制你无法单步调试.怎么较快地定位BUG发生的根源? 这里记录一下刚才我在找BUG的时候采用的思路, ...
- 年年出妖事,一例由JSON解析导致的"薛定谔BUG"排查过程记录
前言 做开发这么多年,也碰到无数的bug了.不过再复杂的bug,只要仔细去研读代码,加上debug,总能找到原因. 但是最近公司内碰到的这一个bug,这个bug初看很简单,但是非常妖孽,在一段时间内我 ...
- 海王星给你好看!FineUI v4.0公测版发布暨《你找BUG我送书》活动开始(活动已结束!)
<FineUI v4.0 你找BUG我送书>活动已结束,恭喜如下三位网友获得由 FineUI 作者亲自翻译的图书<jQuery实战 第二版>! 奋斗~ 吉吉﹑ purplebo ...
- 找BUG
找一找BUG 一段代码,实现一个pop,push,和getmin都是O(1)的方法. 最初源代码 伙伴代码如下,代码的地址可以通过这个访问: Ubuntu Pastebin https://paste ...
- 判断空间上三个点是否共线问题【找bug篇】
判断空间上三个点是否在同一直线上[找bug篇] 作者:Vashon 时间:20150601 发布时间:20150718 一.拿到问题,首先分析并理清思路. 判断三点是否在同一条直线上需满足以下几点 ...
- 如何正确的找BUG
什么是BUG 漏洞是在硬件.软件.协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统.具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在S ...
- 记录一次bug解决过程:数据迁移
一 总结 不擅长语言表达,勤于沟通,多锻炼 调试MyBatis中SQL语法:foreach 问题:缺少关键字VALUES.很遗憾:它的错误报的让人找不着北. 二 BUG描述:MyBatis中批量插入数 ...
随机推荐
- 教你如何快速使用Github
以前看过几篇github的使用教程,感觉还是不是很清晰,自从看到了这篇,通俗易懂,也学会基本的使用了,在此为大家推荐.(转自知乎,为了能让更多的人看到,请允许我使用 “原创”,如果侵权请联系.) Gi ...
- LINUX下QT FOR ARM开发环境搭建过程 (使用qt-x11-opensource-src-4.5.2.tar.gz进行编译)
在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括了Qt Designer等基本工具,用于在PC上对程序的开发调试,使我们能确保程序放到 ...
- 第一式、单例模式-Singleton模式(创建型)
一.简介 单例模式主要用的作用是用于保证程序运行中某个类只有一个实例,并提供一个全局入口点.单例模式(Singleton)为GOF阐述的标准24种设计模式中最简单的一个.但随着时间推移,GOF所阐述的 ...
- centos安装最新版MySQL 8.0教程
这篇教程是通过yum方式安装的 安装依赖 yum install libaio wget -y 检查MYSQL是否已安装 yum list installed | grep mysql 如果有先卸载 ...
- Nginx+Keepalived部署流程
环境介绍 1)LB01 Hostname:lb01.example.com VIP:192.168.3.33(eth0:0) IP:192.168.3.31(eth0) OS:Centos 7 2)L ...
- Markdown教程<2> mermaid图形绘制(1)
Markdown教程<2> mermaid图形绘制(1) 博客园中的markdown编辑器同时支持mermaid图表引擎与tex公式引擎,可以使用mermaid直接画出流程图,时序图,甘特 ...
- 浅谈AI视频技术超分辨率
泛娱乐应用成为主流,社交与互动性强是共性,而具备这些特性的产品往往都集中在直播.短视频.图片分享社区等社交化娱乐产品,而在这些产品背后的黑科技持续成为关注重点,网易云信在网易MCtalk 泛娱乐创新峰 ...
- pycharm同步代码到linux(转)
pycharm是一个非常强大的python开发工具,现在很多代码最终在线上跑的环境都是linux,而开发环境可能还是windows下开发,这就需要经常在linux上进行调试,或者在linux对代码进行 ...
- 100天搞定机器学习|Day2简单线性回归分析
第一天机器学习100天|Day1数据预处理,我们学习了数据预处理.知道了,数据预处理是机器学习中最基础和最麻烦,未来占用时间最长的一步操作.数据预处理一般有六个步骤,导入库.导入数据集.处理缺失值.分 ...
- 跟我学SpringCloud | 第九篇:服务网关Zuul初
SpringCloud系列教程 | 第九篇:服务网关Zuul初探 前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散 ...