日志模块设计

1、定义日志的登录

log_lv = {
    'info': logging.INFO,
    'debug': logging.DEBUG,
    'error': logging.ERROR,
    'warning': logging.WARNING
}

2、定义日志的主类

class Logger(object):

    def __init__(self, level='info'):
        # 函数名
        # self.func=func
        # 获取日志器 用于创建或获取用于发送日志记录消息的Logger对象
        self.__logger = logging.getLogger()
        # 设置日志级别为INFO
        self.__logger.setLevel(log_lv[level])
        # 当然的时间年-月-日
        current_time = strftime('%Y-%m-%d', localtime(time()))
        # 日志的路径名称 y-m-d.log文件
        log_name = os.path.join(LOG_PATH, current_time + '.log')
        logfile = log_name
        # 输出到文件处理器 还包含SteamHandler(输出到控制台)、SocketHandler(输出到网络套接字)
        # mode为w 表示覆盖写入 mode为a 表示追加的方式
        fh = logging.FileHandler(logfile, mode='w', encoding='utf-8')
        # 设置格式化器 时间戳、日志级别、日志名称、消息内容
        formatter = logging.Formatter("%(asctime)s - %(filename)s [line:%(lineno)d] - %(levelname)s: %(message)s")
        fh.setFormatter(formatter)
        # 输出到控制台的处理器
        sh = logging.StreamHandler()
        sh.setFormatter(formatter)
        # 添加文件句柄
        self.__logger.addHandler(fh)
        self.__logger.addHandler(sh)

    def get_logger(self):
        """
        返回日志器
        :return:
        """
        return self.__logger


logger = Logger().get_logger()

3、设计日志装饰器

def add_func_log(func):
    """
    装饰器
    :param func:被装饰的函数
    :return:
    """

    @wraps(func)
    def wrap(*args, **kwargs):
        logger.info('执行函数【{}】'.format(func.__name__))
        # 执行被装饰的函数
        content = func(*args, **kwargs)
        logger.info('【{}】函数执行完成'.format(func.__name__))
        return content

    return wrap  # 返回函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值