appConfig.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import os
  2. import logging
  3. from dataclasses import dataclass, asdict
  4. from utils.logUtil import LogUtil
  5. from utils.config_loader import ConfigLoader
  6. # 简化版的GetLogger实现
  7. def GetLogger(name='default'):
  8. """返回配置好的日志器"""
  9. logger = LogUtil.get_logger(name)
  10. return logger
  11. @dataclass
  12. class DatabaseConfig:
  13. type: str
  14. url: str
  15. timeout: int
  16. poolSize: int
  17. maxPoolSize: int
  18. minPoolSize: int
  19. maxIdleTime: int
  20. @dataclass
  21. class MinioConfig:
  22. endpoint: str
  23. accessKey: str
  24. secretKey: str
  25. secure: bool
  26. poolSize: int
  27. timeout: int
  28. @dataclass
  29. class LoggingConfig:
  30. logFilePath: str
  31. maxFileSize: int
  32. maxTotalSize: int
  33. backupCount: int
  34. logFormat: str
  35. level: str
  36. @dataclass
  37. class AppConfig:
  38. databaseConfig: dict
  39. minioConfig: MinioConfig
  40. loggingConfig: LoggingConfig
  41. @staticmethod
  42. def load_from_file(file_path: str):
  43. try:
  44. # 确保使用正确的配置加载方法
  45. config_data = ConfigLoader.load_config(file_path)
  46. database_config = config_data.get('databaseConfig', {})
  47. minio_config = MinioConfig(**config_data.get('minioConfig', {}))
  48. logging_config = LoggingConfig(**config_data.get('loggingConfig', {}))
  49. return AppConfig(
  50. databaseConfig=database_config,
  51. minioConfig=minio_config,
  52. loggingConfig=logging_config
  53. )
  54. except Exception as e:
  55. print(f"加载配置文件失败: {e}")
  56. # 返回默认配置
  57. return AppConfig(
  58. databaseConfig={},
  59. minioConfig=MinioConfig(None, None, None, False, 5, 30),
  60. loggingConfig=LoggingConfig('log/app.log', 10485760, 104857600, 5, '%(asctime)s - %(levelname)s - %(message)s', 'INFO')
  61. )
  62. def GetDbUtil():
  63. """获取数据库工具实例"""
  64. from utils.rdbmsUtil import RdbmsUtil # 延迟导入避免循环依赖
  65. try:
  66. # 从配置中获取数据库连接参数
  67. db_config = config.databaseConfig
  68. if not db_config:
  69. raise ValueError("数据库配置未加载")
  70. return RdbmsUtil(
  71. db_type=db_config.get('type'),
  72. db_url=db_config.get('url'),
  73. timeout=db_config.get('timeout', 30),
  74. pool_size=db_config.get('poolSize', 5)
  75. )
  76. except Exception as e:
  77. logger = GetLogger()
  78. logger.error(f"创建数据库工具失败: {e}")
  79. return None
  80. def GetMinIOUtil():
  81. """获取MinIO工具实例"""
  82. from utils.minioUtil import MinioUtil # 延迟导入避免循环依赖
  83. try:
  84. # 从配置中获取MinIO连接参数
  85. minio_config = config.minioConfig
  86. if not minio_config.endpoint:
  87. raise ValueError("MinIO配置不完整")
  88. return MinioUtil(
  89. endpoint=minio_config.endpoint,
  90. access_key=minio_config.accessKey,
  91. secret_key=minio_config.secretKey,
  92. secure=minio_config.secure,
  93. pool_size=minio_config.poolSize,
  94. timeout=minio_config.timeout
  95. )
  96. except Exception as e:
  97. logger = GetLogger()
  98. logger.error(f"创建MinIO工具失败: {e}")
  99. return None
  100. # 默认配置 - 添加错误处理
  101. try:
  102. config = AppConfig.load_from_file(os.path.join(os.path.dirname(__file__), '..', 'conf', 'appConfig.json'))
  103. except Exception as e:
  104. print(f"加载默认配置失败: {e}")
  105. # 使用硬编码的默认配置
  106. config = AppConfig(
  107. databaseConfig={},
  108. minioConfig=MinioConfig(None, None, None, False, 5, 30),
  109. loggingConfig=LoggingConfig('log/app.log', 10485760, 104857600, 5, '%(asctime)s - %(levelname)s - %(message)s', 'INFO')
  110. )
  111. # 使用示例
  112. logger = GetLogger()
  113. logger.info("Application configuration loaded successfully.")