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')
    
posted on 2019-07-01 21:59  _albert  阅读(176)  评论(0编辑  收藏  举报