• logging,包


    import 方式

    所有对包的操作,都相当于对包下的__init__操作

    from a.b.c import d

    b 必须 是包 import 最后只有一个层级

    相对导入 . 代表当前路径, .. 代表父级路径

    logging日志

    # 旗舰版
    ## 旗舰版logging
    
    import os
    import logging.config
    
    ## 定义三种输出格式
    
    standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' 
                      '[%(levelname)s][%(message)s]' ## (时间,线程名字,线程数量,任务名字,文件名字,报错行数,等级,信息)
    
    simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
    
    id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
    
    ## 目录 路径
    logfile_dir = os.path.dirname(os.path.abspath(__file__))
    
    logfile_name = 'log1.log'
    logfile_name_boss = 'boss.log'
    ## 如果不存在定义的日志目录就创建一个
    
    if not os.path.isdir(logfile_dir):
        os.mkdir(logfile_dir)
    
    # log 文件的全路径
    
    logfile_path = os.path.join(logfile_dir,'logs',logfile_name)
    logfile_path_boss = os.path.join(logfile_dir,'boss',logfile_name_boss)
    ## log配置字典
    
    
    LOGGING_DIG= {
        'version':1,
        'disable_existing_loggers':False,
        'formatters':{          ## 配置相应格式化
            'standard':{
                'format':standard_format
            },
            'simple':{
                'format':simple_format
            },
            'easy':{
                'format':id_simple_format
            }
        },
        'filters':{},
        'handlers':{  ## 配置句柄 文件 或者 控制台
            'console':{
                'level':'DEBUG',
                'class':'logging.StreamHandler',
                'formatter':'simple'
            },
            'default':{
                'level':'DEBUG',
                'class':'logging.handlers.RotatingFileHandler', ## 轮换着保存到文件
                'formatter':'standard',
                'filename':logfile_path,   # 文件名字  绝对路径
                'maxBytes':1024*1024*5,  ## 单文件最大大小  字节
                'backupCount':5,         ## 最多多少个文件
                'encoding':'utf-8'
            },
            'sb_boss':{
                'level':'DEBUG',
                'class':'logging.handlers.RotatingFileHandler', ## 轮换着保存到文件
                'formatter':'easy',
                'filename':logfile_path_boss,   # 文件名字  绝对路径
                'maxBytes':1024*1024*5,  ## 单文件最大大小  字节
                'backupCount':5,         ## 最多多少个文件
                'encoding':'utf-8'
            }
        },
        'loggers':{        #对象
                '':{
                    'handlers':['default','console','sb_boss'],
                    'level':'DEBUG',
                    'propagate':True
                }
        }
    }
    
    
    
    def load_my_logging_cfg(task_id):
        logging.config.dictConfig(LOGGING_DIG)  ## 添加配置
        logger = logging.getLogger(task_id) ##  任务标识
        return logger
    
    
    if __name__ == '__main__':
        logger = load_my_logging_cfg('购物车')   ##这是使用,这个部分可以包装成函数
        logger.info('it works')
        
    
  • 相关阅读:
    mysql基础以优化
    Mysql建立索引基础
    Mysql(1)
    SVN学习总结
    Github
    Java Eclipse断点调试
    Java设计模式图文详解
    代理模式
    Java——动态代理技术
    Spring基本概念理解
  • 原文地址:https://www.cnblogs.com/albert0823/p/11117029.html
Copyright © 2020-2023  润新知