import logging import os from logging.handlers import RotatingFileHandler def setup_logging(): # 创建logs目录(如果不存在) log_dir = 'logs' if not os.path.exists(log_dir): os.makedirs(log_dir) # 配置根日志记录器 root_logger = logging.getLogger() # 如果已经有handlers,先移除它们以防重复 if root_logger.handlers: for handler in root_logger.handlers[:]: root_logger.removeHandler(handler) root_logger.setLevel(logging.INFO) # 创建格式化器 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) # 创建文件处理器 file_handler = RotatingFileHandler( os.path.join(log_dir, 'app.log'), maxBytes=10*1024*1024, # 10MB backupCount=5 ) file_handler.setLevel(logging.INFO) file_handler.setFormatter(formatter) # 创建控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) console_handler.setFormatter(formatter) # 添加处理器到根日志记录器 root_logger.addHandler(file_handler) root_logger.addHandler(console_handler) # 设置propagate=False以防止日志消息向上传播 for logger_name in logging.root.manager.loggerDict: logger = logging.getLogger(logger_name) logger.propagate = False return root_logger logger = setup_logging()