import logging
import os.path
import time
from common import getpathInfo
path = os.path.dirname(getpathInfo.get_path()) # 拿到绝对路径 C:\Users\testing\PycharmProjects\InterfaceFrame
class Logger(object):
def __init__(self, logger):
"""
指定保存日志的文件路径,日志级别,以及调用文件
将日志存入到指定的文件中
:param logger:
"""
# 创建一个logger
self.logger = logging.getLogger(logger)
self.logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入日志文件
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
# path = os.path.dirname(getpathInfo.get_path()) # 拿到绝对路径 C:\Users\testing\PycharmProjects\InterfaceFrame
# print("这里拿到的路径是:", path)
log_path = os.path.join(path, 'logs')
log_name = os.path.join(log_path, rq + '.log')
# 这个判断是重复写日志问题,这里进行判断,如果logger.handlers列表为空,则添加,否则,直接去写日志
if not self.logger.handlers:
fh = logging.FileHandler(log_name, encoding='utf-8')
fh.setLevel(logging.INFO)
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
self.logger.addHandler(fh)
self.logger.addHandler(ch)
# 添加下面一句,在记录日志之后移除句柄
# self.logger.removeHandler(ch)
def get_log(self):
return self.logger
if __name__ == '__main__':
Logger("ssss").get_log().info("test01case------>>测试开始前准备")
重点在 if判断