找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)

最后呢解决了

posted @   小小咸鱼YwY  阅读(358)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示