带薪摸鱼的第四天之logging日志封装

1.logging封装代码:

import logging
import settings


class Logger:
    isirsta = None

    def __init__(self, rootname, file, fmt, encoding, debug):
        self.rootname = rootname
        self.file = file
        self.fmt = fmt
        self.encoding = encoding
        self.debug = debug

    def __new__(cls, *args, **kwargs):
        """
        实现简单的单例模式
        :param args:
        :param kwargs:
        :return:
        """
        if not cls.isirsta:
            cls.isirsta = super().__new__(cls)
            return cls.isirsta
        return cls.isirsta

    def logger_log(self):
        # 调试模式
        if self.debug:
            filelevel = logging.DEBUG
            consolelevel = logging.DEBUG
        else:
            filelevel = logging.WARNING
            consolelevel = logging.INFO

        # 设置等级
        loggers = logging.getLogger(self.rootname)
        loggers.setLevel(logging.DEBUG)

        # 创建日志处理器
        file = logging.FileHandler(filename=self.file, encoding=self.encoding)
        file.setLevel(filelevel)  # 设置写入文件的日志等级

        console = logging.StreamHandler()
        console.setLevel(consolelevel)  # 设置控制台输出日志的等级

        # 3. 创建格式化器
        fmts = logging.Formatter(fmt=self.fmt)

        # 4. 把格式化器添加到日志处理器上
        file.setFormatter(fmts)
        console.setFormatter(fmts)

        # 5. 把日志处理器添加到日志器
        loggers.addHandler(file)
        loggers.addHandler(console)

        return loggers


logger = Logger(**settings.LOGER_DATA).logger_log()

2.settings配置文件配置内容

# 日志
LOGER_DATA = {
    "rootname": "SupTech",
    "file": os.path.join(BASE_PATH, 'logs', 'log.log'),
    "fmt": "%(levelname)s %(asctime)s [%(filename)s-->line:%(lineno)d]:%(message)s",
    "encoding": "utf-8",
    "debug": False,
}

3.log.log日志存储文件

  • 手动创建一个logs文件夹,在下面手动创建一个log.log的文件 

3.使用

4.解释

  • 日志模块用的比较频繁,几乎所有接口都会用到,因为我们要打印日志实时查看,所以用单例模式,控制实例产生的数量,达到节约资源的目的,不然的话每个接口内都进行实例化logger,会很占资源
  • 调试模式,通过settings里面的实参True和False控制,False为关闭调试模式,打印日志时,只有warning等级的日志才会写入log.log文件,True为打开调试模式,只要执行,所有等级的日志都会写入日志文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值