""" 配置同时打印到控制台和本地的日志方法 """ import os import logging from datetime import datetime import constant # 构造一个loger对象函数 def get_logger(name='my_logger', log_dir=constant.LOG_PATH, log_level=logging.INFO): """ 获取一个配置好的logger实例。 :param name: logger的名称 :param log_level: logger的级别 :param log_dir: 日志文件存储的目录 :return: 配置好的logger实例 """ # 确保日志目录存在 if not os.path.exists(log_dir): os.makedirs(log_dir) # 创建一个FileHandler,用于写入日志文件 current_date = datetime.now().strftime('%Y-%m-%d') log_filename = os.path.join(log_dir, f'log_{current_date}.txt') # 创建logger logger = logging.getLogger(name) if logger.handlers: for i in range(0, len(logger.handlers)): if len(logger.handlers) == 0: break logger.removeHandler(logger.handlers[0]) logger.setLevel(log_level) fh = logging.FileHandler(log_filename) fh.setLevel(logging.DEBUG) # 你可以根据需要调整文件处理器的级别 # 创建一个StreamHandler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(log_level) # 你可以为控制台处理器设置与logger相同的级别 # 定义handler的输出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) ch.setFormatter(formatter) # 给logger添加handler logger.addHandler(fh) # logger.addHandler(ch) # 返回配置好的logger实例 return logger