|
|
пре 1 недеља | |
|---|---|---|
| .. | ||
| README.md | пре 1 недеља | |
| config.example.toml | пре 2 месеци | |
| config.go | пре 1 недеља | |
| config_test.go | пре 2 месеци | |
| data.toml | пре 1 недеља | |
基于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"
// 从文件加载配置
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)
}
// 创建日志器
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),
)
}
ip: 服务器监听IP地址port: 服务器监听端口level: 日志级别 (debug/info/warn/error/fatal)development: 是否为开发模式encoding: 日志编码格式 (json/console)output_paths: 日志输出路径数组log_dir: 日志文件存放目录enabled: 是否启用审计功能database_path: 审计数据库文件路径retention_days: 审计数据保留天数buffer_size: 审计缓冲区大小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() // 获取完整的输出路径列表
如果配置文件中缺少某些字段,系统会自动设置合理的默认值:
查看 config.example.toml 获取完整的配置示例。
查看 _example_usage.go 了解如何在应用程序中使用这些配置。