package config import ( "fmt" "os" "github.com/spf13/viper" ) type AppConfig struct { Env string Server server Datasource datasource Logging log Messaging messaging Dynamics dynamics } type server struct { Port int } type datasource struct { Dsn string } type log struct { Level string // 日志打印级别 debug info warn error Format string // 输出日志格式 logfmt, json Path string // 输出日志文件路径 FileName string // 输出日志文件名称 FileMaxSize int // 【日志分割】单个日志文件最多存储量 单位(mb) FileMaxBackups int // 【日志分割】日志备份文件最多数量 MaxAge int // 日志保留时间,单位: 天 (day) Compress bool // 是否压缩日志 Stdout bool // 是否输出到控制台 } type messaging struct { Centrifugo centrifugo } type centrifugo struct { TokenSecret string ApiKey string ApiEndpoint string Address string } type dynamics struct { Ip string UdpLocalPort int UdpRemotePort int HttpPort int } var Config AppConfig // 加载配置 func LoadConfig() { viper.SetConfigName("xiannccda.setting") viper.SetConfigType("yml") viper.AddConfigPath("./config/") viper.AddConfigPath(".") err := viper.ReadInConfig() if err != nil { panic(fmt.Errorf("读取配置文件错误: %w", err)) } fmt.Println(os.Args) err = viper.Unmarshal(&Config) if err != nil { panic(fmt.Errorf("解析配置文件错误: %w", err)) } fmt.Println(Config) }