网上好多说是用这个方法,但没有解决:
logger.propagate = False
成功解决方法, 如果当前日志器里handler已存在就不重复添加,为空再添加,避免日志重复输出:
import logging,os,sys
class Log_info(object):
def __init__(self,folderName):
path = os.path.dirname(os.path.dirname(__file__)) + '/' + folderName + '/'
if os.path.exists(path):
self.logs_path = path
else:
print("未找到指定文件夹:%s,请核实!" % folderName)
sys.exit()
# 指定日志文件名,获取当前执行的py文件名,将日志存放到指定test_logs文件夹中
self.filename = self.logs_path + str(os.path.basename(sys.argv[0]).split(".")[0]) + '.log'
# 指定输出的格式和内容
self.format = '%(asctime)s [%(filename)s]-<%(funcName)s> %(levelname)s:%(message)s'
# 指定时间格式
self.datefmt = '%Y-%m-%d %H:%M:%S'
self.logger = logging.getLogger(__name__)
def main(self):
self.logger.setLevel(logging.INFO)
format = logging.Formatter(self.format,datefmt=self.datefmt)
# 如果当前日志器里handler已存在就不重复添加,为空再添加,避免日志重复输出
if not self.logger.handlers:
# 日志输出到文件
file_handler = logging.FileHandler(self.filename)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(format)
# 使用StreamHandler输出到屏幕
console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(format)
# 添加两个Handler
self.logger.addHandler(file_handler)
self.logger.addHandler(console)
return self.logger.info
以上就是解决方法。