logging模块的使用

logging模块的使用

import logging


# 创建一个logger
logger = logging.getLogger() #参数填写name,默认为root
# 给logger设置级别
logger.setLevel(logging.INFO) #级别排序 DEBUG INFO WARNING ERROR CRITICAL
# 新建一个写入到文件中的处理器
file_handler = logging.FileHandler("log.txt",encoding="utf-8")
# 新建一个输出到控制台的处理器
stream_handler = logging.StreamHandler()
# 给控制器设置级别
file_handler.setLevel(logging.INFO)
stream_handler.setLevel(logging.INFO)
# 给控制器设置输出格式化
fmt = logging.Formatter("%(asctime)s - %(filename)s[line: %(lineno)d] - %(name)s - %(message)s")
file_handler.setFormatter(fmt)
stream_handler.setFormatter(fmt)
# 将logger和控制器绑定
logger.addHandler(file_handler)
logger.addHandler(stream_handler)

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

logging模块的封装

import logging


class LoggingHandler(logging.Logger):

    def __init__(self,name="root",lv="DEBUG",file=None,
                 formt="%(asctime)s - %(filename)s[line: %(lineno)d] - %(name)s - %(message)s",):
        # 实例化一个logger
        # logger = logging.getLogger(name=name) ----》优化成直接继承logging中的logger,调用父级实例化一个logger,解决行号问题
        super().__init__(name)
        # 给logger设置级别
        self.setLevel(lv)
        #设置输出格式化
        fmt = logging.Formatter(formt)
        #实例化一个处理器
        if file:
            file_handler = logging.FileHandler(file,encoding="utf-8")
            file_handler.setLevel(lv)
            file_handler.setFormatter(fmt)
            self.addHandler(file_handler)
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(lv)
        stream_handler.setFormatter(fmt)
        self.addHandler(stream_handler)

if __name__ == '__main__':
    logger = LoggingHandler()
    logger.warning("这是一个Warn")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。