第三天,日志封装

日志封装

# -*- coding: utf-8 -*-
import os
import logging
import colorlog  # 控制台日志输入颜色
from logging.handlers import RotatingFileHandler # 按文件大小滚动备份


# 控制台日志输出颜色
log_colors_config = {
    'DEBUG': 'cyan',
    'INFO': 'green',
    'WARNING': 'yellow',
    'ERROR': 'red',
    'CRITICAL': 'bold_red',
}

class LoggerHandler:
    # 日志等级
    _logger_level = {
        'debug': 'DEBUG',
        'info': 'INFO',
        'warning': 'WARNING',
        'error': 'ERROR',
        'critical': 'CRITICAL'
    }

    def __init__(self, file_name, logger_level, stream_level='info',
                 file_level='warning'):
        self.file_name = file_name
        self.logger_level = self._logger_level.get(logger_level, 'debug')
        self.stream_level = self._logger_level.get(stream_level, 'info')
        self.file_level = self._logger_level.get(file_level, 'warning')
        # 创建日志对象
        self.logger = logging.getLogger()
        # 设置日志级别
        self.logger.setLevel(self.logger_level)

        if not self.logger.handlers:
            # 设置日志输出流
            f_stream = logging.StreamHandler()
            # 创建一个FileHandler,用于写到本地
            # 使用RotatingFileHandler类,滚动备份日志
            f_file = RotatingFileHandler("E:\APItest\logs\log.log", mode='a',
                                     maxBytes=1024 * 1024 * 5, backupCount=5,
                                     encoding='utf-8')
            # 设置输出流级别
            f_stream.setLevel(self.stream_level)
            f_file.setLevel(self.file_level)
            # 设置日志输出格式
            self.formatter = colorlog.ColoredFormatter(
                '%(log_color)s[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s',
                log_colors=log_colors_config)
            f_stream.setFormatter(self.formatter)
            f_file.setFormatter(self.formatter)
            self.logger.addHandler(f_stream)
            self.logger.addHandler(f_file)

    @property
    def get_logger(self):
        return self.logger
    
def logger():
    if not os.path.exists("E:\APItest\logs"):
        os.mkdir("E:\APItest\logs")
    return LoggerHandler(
        logger_level='debug',
        file_name="E:\APItest\logs\log.txt",
        stream_level='debug',
        file_level='info'
    ).get_logger
    

if __name__ == "__main__":
    logger().debug('debug')
    logger().info('info')
    logger().warning('warning')
    logger().error('error')
    logger().critical('critical')









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值