logging库二次封装

#coding:utf-8
log.py
import logging


class MyLogging(logging.Logger):
    path = "../../../../../../../../auto_test_se/logs/loga.log"
    def __init__(self, name, level=logging.INFO, file=path, hint_show=True):
        """

        :param name: 日志名字
        :param level: 级别
        :param file: 日志文件名称
        :param hint_show: 日志控制台提示(默认为True 自动开启)
        """
        # 继承logging模块中的Logger类,因为里面实现了各种各样的方法,很全面,但是初始化很简单
        # 所以我们需要继承后把初始化再优化下,变成自己想要的。
        super().__init__(name, level)

        # 设置日志格式
        # fmt = "%(asctime)s %(name)s +'线程ID:'+%(threadName)s %(filename)s--%(lineno)行 :%(message)s"
        # fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s--%(lineno)dline :%(message)s"
        fmt = "%(asctime)s %(name)s 线程:%(threadName)s 执行程序名:%(filename)s--%(lineno)d行 :%(message)s"

        # %(levelno)s:打印日志级别的数值
        # %(levelname)s:打印日志级别的名称
        # %(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
        # %(filename)s:打印当前执行程序名
        # %(funcName)s:打印日志的当前函数
        # %(lineno)d:打印日志的当前行号
        # %(asctime)s:打印日志的时间
        # %(thread)d:打印线程ID
        # %(threadName)s:打印线程名称
        # %(process)d:打印进程ID
        # %(message)s:打印日志信息


        formatter = logging.Formatter(fmt)

        # 文件输出渠道
        if file:
            handle2 = logging.FileHandler(file, encoding="utf-8")
            handle2.baseFilename = file
            handle2.setFormatter(formatter)
            self.addHandler(handle2)

            # 控制台渠道
            if hint_show:
                handle1 = logging.StreamHandler()
                handle1.setFormatter(formatter)
                self.addHandler(handle1)


if __name__ == '__main__':
    logger = MyLogging("log_name",level = logging.DEBUG)
    logger.info("类型:info")
    logger.debug("类型:debug ")
    logger.warning("类型:warning")




 

你可能感兴趣的:(python库,python)