gtong 77ba2d1c54 11.24 há 1 semana atrás
..
README.md 77ba2d1c54 11.24 há 1 semana atrás
config.example.toml 39b8d9e9ac 9.16 há 2 meses atrás
config.go 77ba2d1c54 11.24 há 1 semana atrás
config_test.go 39b8d9e9ac 9.16 há 2 meses atrás
data.toml 77ba2d1c54 11.24 há 1 semana atrás

README.md

配置系统

基于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. 加载配置

// 从文件加载配置
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. 与日志系统集成

// 创建日志器
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: 数据文件路径 (向后兼容)

辅助方法

配置验证

if err := cfg.Validate(); err != nil {
    // 处理配置错误
}

目录创建

if err := cfg.CreateDirectories(); err != nil {
    // 处理目录创建错误
}

日志级别转换

level := cfg.Log.GetLogLevel() // 转换为 zapcore.Level

输出路径处理

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 了解如何在应用程序中使用这些配置。