config

package
v0.0.0-...-ef5db53 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 14, 2025 License: MIT Imports: 14 Imported by: 0

README

程序的配置管理

配置的加载

// 用于加载配置
config.LoadConfigFromYaml(yamlConfigFilePath)

程序内部如何使用配置

// Get Config --> ConfigObject
config.C().MySQL.Host
// config.ConfigObjectInstance

为你的包添加单元测试

如何验证我们这个包的 业务逻辑是正确

func TestLoadConfigFromYaml(t *testing.T) {
	err := config.LoadConfigFromYaml(fmt.Sprintf("%s/book/v2/application.yaml", os.Getenv("workspaceFolder")))
	if err != nil {
		t.Fatal(err)
	}
	t.Log(config.C())
}

func TestLoadConfigFromEnv(t *testing.T) {
	os.Setenv("DATASOURCE_HOST", "localhost")
	err := config.LoadConfigFromEnv()
	if err != nil {
		t.Fatal(err)
	}
	t.Log(config.C())
}

补充日志配置

// 如果是文件,结合该库使用"gopkg.in/natefinch/lumberjack.v2"
// 自己的作业: 添加日志轮转配置,结合 gopkg.in/natefinch/lumberjack.v2 使用
// 可以参考: https://github.com/infraboard/mcube/blob/master/ioc/config/log/logger.go
type Log struct {
	Level zerolog.Level `json:"level" yaml:"level" toml:"level" env:"LOG_LEVEL"`

	logger *zerolog.Logger
	lock   sync.Mutex
}

func (l *Log) SetLogger(logger zerolog.Logger) {
	l.logger = &logger
}

func (l *Log) Logger() *zerolog.Logger {
	l.lock.Lock()
	defer l.lock.Unlock()

	if l.logger == nil {
		l.SetLogger(zerolog.New(l.ConsoleWriter()).Level(l.Level).With().Caller().Timestamp().Logger())
	}

	return l.logger
}

func (c *Log) ConsoleWriter() io.Writer {
	output := zerolog.NewConsoleWriter(func(w *zerolog.ConsoleWriter) {
		w.NoColor = false
		w.TimeFormat = time.RFC3339
	})

	output.FormatLevel = func(i interface{}) string {
		return strings.ToUpper(fmt.Sprintf("%-6s", i))
	}
	output.FormatMessage = func(i interface{}) string {
		return fmt.Sprintf("%s", i)
	}
	output.FormatFieldName = func(i interface{}) string {
		return fmt.Sprintf("%s:", i)
	}
	output.FormatFieldValue = func(i interface{}) string {
		return strings.ToUpper(fmt.Sprintf("%s", i))
	}
	return output
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DB

func DB() *gorm.DB

func L

func L() *zerolog.Logger

func LoadConfigFromEnv

func LoadConfigFromEnv() error

从环境变量中读取配置 config.MySQL.DB = os.Getenv("MYSQL_DB")

func LoadConfigFromYaml

func LoadConfigFromYaml(configPath string) error

修改 LoadConfigFromYaml 函数,确保每次加载都创建新实例:

Types

type Config

type Config struct {
	Application *application `toml:"app" yaml:"app" json:"app"`
	MySQL       *mySQL       `toml:"mysql" yaml:"mysql" json:"mysql"`
	//	LogRotateConfig *logRotateConfig `toml:"log_rotate_config" yaml:"log_rotate_config" json:"log_rotate_config"`
	Log *logConfig `toml:"log" yaml:"log" json:"log"`
}

使用结构体嵌套的方式定义全局变量配置结构体

func C

func C() *Config

func Defalut

func Defalut() *Config

定义构造函数,提供外部调用默认的配置文件

func (*Config) Logger

func (c *Config) Logger() *zerolog.Logger

func (*Config) String

func (c *Config) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL