zoukankan      html  css  js  c++  java
  • 找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("33[0;31;44m		杨大爷超市欢迎您				33[5m")
            print("33[0;30;42m		输入0进入注册界面			33[5m")
            print("33[0;30;42m		输入1进入登入界面			33[5m")
            print("33[0;30;42m		输入2进入充值界面			33[5m")
            print("33[0;30;42m		输入3进入余额查询界面		33[5m")
            print("33[0;30;42m		输入4进入购物界面			33[5m")
            print("33[0;30;42m		输入5进入解冻界面			33[5m")
            print("33[0;30;42m		输入q退出程序 				33[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("33[0;31;44m		杨大爷超市欢迎您				33[5m")
            print("33[0;30;42m		输入0进入注册界面			33[5m")
            print("33[0;30;42m		输入1进入登入界面			33[5m")
            print("33[0;30;42m		输入2进入充值界面			33[5m")
            print("33[0;30;42m		输入3进入余额查询界面		33[5m")
            print("33[0;30;42m		输入4进入购物界面			33[5m")
            print("33[0;30;42m		输入5进入解冻界面			33[5m")
            print("33[0;30;42m		输入q退出程序 				33[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)
    

    最后呢解决了

  • 相关阅读:
    关于回调地狱
    node.js 关于跨域和传递给前台参数
    关于js的当前日期的格式化,和两个日期之间的相减的天数
    CSS 关于让页面的高度达到电脑屏幕的底部
    前端 为什么我选择用框架而不是Jquery
    关于webpack打包图片的路径问题
    关于webpack打包js和css
    微信小程序网络请求的setDate
    WinSocket聊天程序实例(多线程)
    Orcal的JDBC数据连接方式
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11011532.html
Copyright © 2011-2022 走看看