import os import logging from dataclasses import dataclass, asdict from utils.logUtil import LogUtil from utils.config_loader import ConfigLoader # 简化版的GetLogger实现 def GetLogger(name='default'): """返回配置好的日志器""" logger = LogUtil.get_logger(name) return logger @dataclass class DatabaseConfig: type: str url: str timeout: int poolSize: int maxPoolSize: int minPoolSize: int maxIdleTime: int @dataclass class MinioConfig: endpoint: str accessKey: str secretKey: str secure: bool poolSize: int timeout: int @dataclass class LoggingConfig: logFilePath: str maxFileSize: int maxTotalSize: int backupCount: int logFormat: str level: str @dataclass class AppConfig: databaseConfig: dict minioConfig: MinioConfig loggingConfig: LoggingConfig @staticmethod def load_from_file(file_path: str): try: # 确保使用正确的配置加载方法 config_data = ConfigLoader.load_config(file_path) database_config = config_data.get('databaseConfig', {}) minio_config = MinioConfig(**config_data.get('minioConfig', {})) logging_config = LoggingConfig(**config_data.get('loggingConfig', {})) return AppConfig( databaseConfig=database_config, minioConfig=minio_config, loggingConfig=logging_config ) except Exception as e: print(f"加载配置文件失败: {e}") # 返回默认配置 return AppConfig( databaseConfig={}, minioConfig=MinioConfig(None, None, None, False, 5, 30), loggingConfig=LoggingConfig('log/app.log', 10485760, 104857600, 5, '%(asctime)s - %(levelname)s - %(message)s', 'INFO') ) def GetDbUtil(): """获取数据库工具实例""" from utils.rdbmsUtil import RdbmsUtil # 延迟导入避免循环依赖 try: # 从配置中获取数据库连接参数 db_config = config.databaseConfig if not db_config: raise ValueError("数据库配置未加载") return RdbmsUtil( db_type=db_config.get('type'), db_url=db_config.get('url'), timeout=db_config.get('timeout', 30), pool_size=db_config.get('poolSize', 5) ) except Exception as e: logger = GetLogger() logger.error(f"创建数据库工具失败: {e}") return None def GetMinIOUtil(): """获取MinIO工具实例""" from utils.minioUtil import MinioUtil # 延迟导入避免循环依赖 try: # 从配置中获取MinIO连接参数 minio_config = config.minioConfig if not minio_config.endpoint: raise ValueError("MinIO配置不完整") return MinioUtil( endpoint=minio_config.endpoint, access_key=minio_config.accessKey, secret_key=minio_config.secretKey, secure=minio_config.secure, pool_size=minio_config.poolSize, timeout=minio_config.timeout ) except Exception as e: logger = GetLogger() logger.error(f"创建MinIO工具失败: {e}") return None # 默认配置 - 添加错误处理 try: config = AppConfig.load_from_file(os.path.join(os.path.dirname(__file__), '..', 'conf', 'appConfig.json')) except Exception as e: print(f"加载默认配置失败: {e}") # 使用硬编码的默认配置 config = AppConfig( databaseConfig={}, minioConfig=MinioConfig(None, None, None, False, 5, 30), loggingConfig=LoggingConfig('log/app.log', 10485760, 104857600, 5, '%(asctime)s - %(levelname)s - %(message)s', 'INFO') ) # 使用示例 logger = GetLogger() logger.info("Application configuration loaded successfully.")