package config import ( "bytes" "os" "github.com/spf13/viper" ) type AgentConfig struct { Name string `yaml:"name,omitempty"` Mode string `yaml:"mode,omitempty"` Point string `yaml:"point"` NodeType int `yaml:"nodeType"` Delay int `yaml:"delay"` Logging LogOptions `yaml:"logging"` Node HpdsNode `yaml:"node,omitempty"` Funcs []FuncConfig `yaml:"functions,omitempty"` } type FuncConfig struct { Name string `yaml:"name"` DataTag uint8 `yaml:"dataTag"` } type HpdsNode struct { Host string `yaml:"host"` Port int `yaml:"port"` Token string `yaml:"token,omitempty"` } type LogOptions struct { Path string `yaml:"path" json:"path" toml:"path"` // 文件保存地方 Prefix string `yaml:"prefix" json:"prefix" toml:"prefix"` // 日志文件前缀 ErrorFileSuffix string `yaml:"errorFileSuffix" json:"errorFileSuffix" toml:"errorFileSuffix"` // error日志文件后缀 WarnFileSuffix string `yaml:"warnFileSuffix" json:"warnFileSuffix" toml:"warnFileSuffix"` // warn日志文件后缀 InfoFileSuffix string `yaml:"infoFileSuffix" json:"infoFileSuffix" toml:"infoFileSuffix"` // info日志文件后缀 DebugFileSuffix string `yaml:"debugFileSuffix" json:"debugFileSuffix" toml:"debugFileSuffix"` // debug日志文件后缀 Level string `yaml:"level" json:"level" toml:"level"` // 日志等级 MaxSize int `yaml:"maxSize" json:"maxSize" toml:"maxSize"` // 日志文件大小(M) MaxBackups int `yaml:"maxBackups" json:"maxBackups" toml:"maxBackups"` // 最多存在多少个切片文件 MaxAge int `yaml:"maxAge" json:"maxAge" toml:"maxAge"` // 保存的最大天数 Development bool `yaml:"development" json:"development" toml:"development"` // 是否是开发模式 } func ParseConfigByFile(path string) (cfg *AgentConfig, err error) { buffer, err := os.ReadFile(path) if err != nil { return nil, err } return load(buffer) } func load(buf []byte) (cfg *AgentConfig, err error) { cViper := viper.New() cViper.SetConfigType("yaml") cfg = new(AgentConfig) cViper.ReadConfig(bytes.NewBuffer(buf)) err = cViper.Unmarshal(cfg) if err != nil { return nil, err } return }