记录logging模块使用配置方法

记录logging模块使用配置方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、详细代码
  • 写在结尾


前言

之前很少用logging这个模块进行程序的调试记录,最近详细研究后发现有些地方还是很好用的,简单封装了下这个模块的功能,特此记录

一、详细代码

代码如下(示例):

import logging

__logger_dict = dict()


# ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF   记录相关log等级
def log_mod(name, ch_write=True, fh_write=True, ch_log_type=True, fh_log_type=True):
    """
    功能:记录log信息
    参数1:需要报文的log名
    参数2:显示窗口是否写入,等级是否设置为info
    参数3:文件是否写入,等级是否设置为info
    参数4:显示窗口log记录类型
    参数5:文件log记录类型
    """
    if name not in __logger_dict:   # 判断此log是否已记录,未记录则开始初始化
        logger = logging.getLogger(name)    # 设置log名
        logger.setLevel(logging.DEBUG)      # 设置log等级
        ch = logging.StreamHandler()    # 设置窗口显示数据句柄
        if ch_write:
            ch.setLevel(logging.INFO)
        else:
            ch.setLevel(logging.WARNING)
        fh = logging.FileHandler('{}.log'.format(name), encoding='utf-8')   # 设置文件数据句柄
        if fh_write:
            fh.setLevel(logging.INFO)
        else:
            ch.setLevel(logging.WARNING)
        if ch_log_type:
            ch_formatter = logging.Formatter('%(module)s-%(lineno)d %(levelname)s:%(message)s')
        else:
            ch_formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s:%(message)s',
                                             datefmt='%Y/%m/%d %H:%M:%S')
        if fh_log_type:
            fh_formatter = logging.Formatter('%(module)s-%(lineno)d %(levelname)s:%(message)s')
        else:
            fh_formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s:%(message)s',
                                             datefmt='%Y/%m/%d %H:%M:%S')
        ch.setFormatter(ch_formatter)
        fh.setFormatter(fh_formatter)
        logger.addHandler(ch)
        logger.addHandler(fh)
        __logger_dict[name] = logger
        # 这里需要把logger返回
        return logger
    else:
        return __logger_dict[name]


写在结尾

我是一名车载集成测试开发工程师,希望能和志同道合的朋友一起相互学习进步

你可能感兴趣的:(python)