各位大佬,请教个问题,对loggin进行简单封装后,再次调用,运行时日志重复打印 3次,debug查看也只看到调用的代码行有日志输出,不明白为啥会重复打印…封装代码如下:
import logging
import logging.handlers
import os
import time
class Logs(object):
def __init__(self):
self.logger=logging.getLogger("")
LEVELS={
'NOSET': logging.NOTSET,
'DEBUG': logging.DEBUG,
'INFO': logging.INFO,
'WARNING': logging.WARNING,
'ERROR': logging.ERROR,
'CRITICAL': logging.CRITICAL
}
# 创建文件目录
logs_dir='logs'
if os.path.exists(logs_dir) and os.path.isdir(logs_dir):
pass
else:
os.mkdir(logs_dir)
# 修改log保存位置
timestamp=time.strftime("%Y-%m-%d", time.localtime())
logfilename='%s.log' % timestamp
logfilepath=os.path.join(logs_dir, logfilename)
rotatingFileHandler=logging.handlers.RotatingFileHandler(filename=logfilepath,
maxBytes=1024 * 1024 * 50,
backupCount=5,
encoding = 'utf-8')
# 设置输出格式
formatter=logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
rotatingFileHandler.setFormatter(formatter)
# 控制台句柄
console=logging.StreamHandler()
console.setLevel(logging.NOTSET)
console.setFormatter(formatter)
# 添加内容到日志句柄中
self.logger.addHandler(rotatingFileHandler)
self.logger.addHandler(console)
self.logger.setLevel(logging.NOTSET)
def info(self, message):
self.logger.info(message)
def debug(self, message):
self.logger.debug(message)
调用的代码(部分):
import socket
import subprocess
import os
import sys
from appium_po.untils.logs_until import Logs
class AppiumServerUntil():
logs = Logs()
""""检查端口是否被占用"""
def check_port(self, host, port):
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# address = host+':'+str(port)
try:
s.connect((host,int(port)))
except:
self.logs.info('port {} is available!' .format(port))
print('Unexpected error:',sys.exc_info()[0])
return True
else:
self.logs.info('port {} is uesd!'.format(port))
return False
运行日志输出: