记录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]
我是一名车载集成测试开发工程师,希望能和志同道合的朋友一起相互学习进步