# 配置系统 基于TOML的配置文件系统,支持日志和审计功能的完整配置。 ## 配置文件结构 ```toml [server] ip = "127.0.0.1" port = 8080 [log] # 日志级别: debug, info, warn, error, fatal level = "info" # 开发模式 development = false # 编码格式: json, console encoding = "json" # 输出路径,可以包含 stdout, stderr 或文件路径 output_paths = ["stdout", "app.log"] # 日志目录 log_dir = "./DBconfig/logs" [audit] # 是否启用审计功能 enabled = true # 审计数据库路径 database_path = "./DBconfig/audit.db" # 审计数据保留天数 retention_days = 90 # 审计缓冲区大小 buffer_size = 1000 # Storage 配置 # `sql_base_dir` 为脚本(Script)在文件存储模式下的基础目录,默认 `./DBconfig/sqlfiles` [storage] sql_base_dir = "./DBconfig/sqlfiles" # 数据文件路径 data_file = "./DBconfig/data.toml" ``` ## 使用方法 ### 1. 加载配置 ```go // 从文件加载配置 cfg, err := config.LoadConfig("config.toml") if err != nil { log.Fatal(err) } // 设置默认值 cfg.SetDefaults() // 验证配置 if err := cfg.Validate(); err != nil { log.Fatal(err) } // 创建必要的目录 if err := cfg.CreateDirectories(); err != nil { log.Fatal(err) } ``` ### 2. 与日志系统集成 ```go // 创建日志器 appLogger, err := logger.NewLogger( logger.WithLevel(cfg.Log.GetLogLevel()), logger.WithDevelopment(cfg.Log.Development), logger.WithEncoding(cfg.Log.Encoding), logger.WithOutputPaths(cfg.Log.GetOutputPaths()...), ) // 创建审计日志器 if cfg.Audit.Enabled { auditLogger, err := logger.NewAuditLogger( logger.WithDatabasePath(cfg.Audit.DatabasePath), logger.WithRetention(cfg.Audit.RetentionDays), logger.WithBufferSize(cfg.Audit.BufferSize), ) } ``` ## 配置字段说明 ### Server 配置 - `ip`: 服务器监听IP地址 - `port`: 服务器监听端口 ### Log 配置 - `level`: 日志级别 (debug/info/warn/error/fatal) - `development`: 是否为开发模式 - `encoding`: 日志编码格式 (json/console) - `output_paths`: 日志输出路径数组 - `log_dir`: 日志文件存放目录 ### Audit 配置 - `enabled`: 是否启用审计功能 - `database_path`: 审计数据库文件路径 - `retention_days`: 审计数据保留天数 - `buffer_size`: 审计缓冲区大小 ### Storage 配置 - `type`: 存储类型 ("file" 或 "db") - `config_path`: 配置文件路径 (文件存储使用) - `sql_base_dir`: 脚本(Script)基础目录 (文件存储使用) - `database_path`: 数据库文件路径 (数据库存储使用) - `data_file`: 数据文件路径 (向后兼容) ## 辅助方法 ### 配置验证 ```go if err := cfg.Validate(); err != nil { // 处理配置错误 } ``` ### 目录创建 ```go if err := cfg.CreateDirectories(); err != nil { // 处理目录创建错误 } ``` ### 日志级别转换 ```go level := cfg.Log.GetLogLevel() // 转换为 zapcore.Level ``` ### 输出路径处理 ```go paths := cfg.Log.GetOutputPaths() // 获取完整的输出路径列表 ``` ## 默认值 如果配置文件中缺少某些字段,系统会自动设置合理的默认值: - Server.Port: 8080 - Log.Level: "info" - Log.Encoding: "json" - Log.OutputPaths: ["stdout"] - Log.LogDir: "./DBconfig/logs" - Audit.DatabasePath: "./DBconfig/audit.db" - Audit.RetentionDays: 90 - Audit.BufferSize: 1000 - Storage.Type: "db" - Storage.ConfigPath: "./DBconfig/data.toml" - Storage.SQLBaseDir: "./DBconfig/sqlfiles" - Storage.DatabasePath: "./DBconfig/storage.db" - Storage.DataFile: "./DBconfig/data.toml"## 示例 查看 `config.example.toml` 获取完整的配置示例。 查看 `_example_usage.go` 了解如何在应用程序中使用这些配置。