用logging模块保存日志,运行多次循环,第一条记录写一次,第二条记录写两次,第三条记录写三次,日志写入重复。
def logger_write(log_path,logging_name,msg):
'''
配置log
:param log_path: 输出log路径
:param logging_name: 记录中name,可随意
:return:
'''
'''
logger是日志对象,handler是流处理器,console是控制台输出(没有console也可以,将不会在控制台输出,会在日志文件中输出)
'''
# 获取logger对象,取名
logger = logging.getLogger(logging_name)
# 输出DEBUG及以上级别的信息,针对所有输出的第一层过滤
logger.setLevel(level=logging.DEBUG)
#解决方案这里进行判断,如果logger.handlers列表为空,则添加,否则,直接去写日志
if not logger.handlers:
# 获取文件日志句柄并设置日志级别,第二层过滤
handler = logging.FileHandler(log_path, encoding='UTF-8')
handler.setLevel(logging.INFO)
# 生成并设置文件日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# console相当于控制台输出,handler文件输出。获取流句柄并设置日志级别,第二层过滤
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
# 为logger对象添加句柄
logger.addHandler(handler)
logger.addHandler(console)
# 输出不同级别的log
logger.info(msg)
return logger
调用方式:
logger_write('log_path','logging_name','write some bug info.....')